0

我有两张桌子。salessumarry 和 rsales 。两个表都有共同的 id_ref。所以我想要得到的是从 rsales 中选择所有这些值,而 salessumarry 具有相同的 id_ref。到目前为止,这是我的代码。但这没有运行。我不知道这有什么问题。

$result1 = mysql_query("
    SELECT 
    salessumarry,rsales.*,
    FROM salessumarry
    LEFT JOIN rsales ON rsales.receipt = salessumarry.receipt 
    WHERE (register_mode='sales') AND (date BETWEEN '$a' AND '$b')GROUP BY receipt"); 
4

4 回答 4

0

如果想要所有字段

 SELECT 
    salessumarry,rsales.*, 
 FROM

应该

 SELECT 
    * 
 FROM
于 2013-09-28T16:50:44.903 回答
0

该错误是因为您在选择查询中使用表名而不是列名,salessumarry并且在rsales.*. 我想你正在尝试做这样的事情:

$result1 = mysql_query("
    SELECT 
    salessumarry.*,rsales.*
    FROM salessumarry
    LEFT JOIN rsales ON rsales.receipt = salessumarry.receipt 
    WHERE (register_mode='sales') AND (date BETWEEN '$a' AND '$b')GROUP BY salessumarry.receipt");

注意: 请避免使用mysql_queryas

此扩展自 PHP 5.5.0 起已弃用,并将在未来删除。相反,应该使用MySQLiPDO_MySQL扩展。

于 2013-09-28T16:54:27.907 回答
0
  1. 如下所述mysql_query()

     警告

    此扩展自 PHP 5.5.0 起已弃用,并将在未来删除。相反,应该使用MySQLiPDO_MySQL扩展。另请参阅MySQL:选择 API指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括:

    因此,您确实应该切换到不同的 API。

  2. 还记录在案:

    返回值

    对于 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他返回结果集的语句,mysql_query()在成功或错误时返回资源。FALSE

    [ deletia ]

    Example #1 无效查询

    以下查询在语法上无效,因此mysql_query()失败并返回FALSE

    <?php
    $result = mysql_query('SELECT * WHERE 1=1');
    if (!$result) {
        die('Invalid query: ' . mysql_error());
    }
    
    ?>
    

    因此,如果您切换到使用不同的 API,则至少应该测试 的值$result1,如果是FALSE,请检查mysql_error()有关问题的更多信息。

  3. 即使您执行上述任何一项操作,您也可以输出mysql_query()'s string 参数以准确查看正在发送到 MySQL 服务器的命令;然后尝试将其复制/粘贴到 MySQL 客户端(以便您可以直接检查服务器的响应方式)。

  4. 在没有上述任何步骤的情况下,这里的任何人都很难准确地告诉您问题可能是什么。但是,我的猜测是至少存在三个问题:

    • 您的列表末尾有一个多余的逗号SELECT

    • 您没有出现在列表中的名为的;和salessumarrySELECT

    • 您对查询进行分组的receipt列不明确(两个表中似乎都有这样的命名列) - 您应该使用表标识符限定列引用。

  5. 您还应该阅读文章MySQL Extensions toGROUP BY,因为即使上述问题得到纠正,您也可能会有一个返回不确定结果的查询(这不太可能是您的意图)。

于 2013-09-28T16:55:56.427 回答
0

您正在使用额外的逗号请参阅此查询并进行测试。

SELECT 
  salessumarry,
  rsales.*
FROM
  salessumarry 
  LEFT JOIN rsales 
    ON rsales.receipt = salessumarry.receipt 
WHERE (register_mode = 'sales') 
  AND (DATE BETWEEN '$a' 
    AND '$b') 
GROUP BY receipt 
于 2013-09-28T16:46:01.460 回答