将所有字段选择为具有相同id_ref的两个不同表

时间:2013-09-28 16:38:33

标签: php mysql

我有两张桌子。 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 个答案:

答案 0 :(得分: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 

答案 1 :(得分:0)

如果想要所有字段

 SELECT 
    salessumarry,rsales.*, 
 FROM

应该是

 SELECT 
    * 
 FROM

答案 2 :(得分: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_query作为

  

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

答案 3 :(得分:0)

  1. mysql_query()所述:

      

    警告

         

    自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。相反,应使用MySQLiPDO_MySQL扩展名。有关详细信息,另请参阅MySQL: choosing an API指南和related FAQ。该功能的替代方案包括:

         

    因此,您确实应切换到其他API。

  2. 另据记载:

      

    返回值

         

    对于返回结果集的SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句, mysql_query()会在成功时返回resource,或 FALSE 出错了。

         

    [ deletia ]

         

    示例#1无效查询

         

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

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

    因此,如果您切换到使用其他API,则至少测试$result1的值,如果它是{{ 1}},检查mysql_error()以获取有关出错的更多信息。

  3. 即使您执行上述任一操作,您也可以输出FALSE的字符串参数,以确切了解发送到MySQL服务器的命令;然后尝试将其复制/粘贴到MySQL客户端(以便您可以直接检查服务器的响应方式)。

  4. 如果没有上述任何步骤,这里的任何人都很难确切地告诉您问题的原因。但是,我的猜测是至少有三个问题:

    • 您的mysql_query()列表末尾有一个多余的逗号;

    • 您没有名为SELECT,它出现在salessumarry列表中;以及

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

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