php - 返回多个结果的不同 SQL 查询

标签 php mysql sql-server

在我的 SQL Server 中,我有这两个表:

a
id  |  name  |   code   | lastpur  | lastprc  

b
num  |  code |  onHand  | isComm   |  avgPrc

我想做一个查询来打印所有这些字段(表上还有更多字段,但现在不需要访问它们。

两个表都通过字段code连接。我的问题是,a 上只有 1 个条目,而 b 上有 1 个或多个条目。所以我尝试了这个查询:

 $query = "SELECT DISTINCT  a.id, 
                            a.name, 
                            a.lastpur, 
                            a.lastprc, 
                            b.onHand, 
                            b.iscomm, 
                            b.avgPrc, 
                            (b.onHand - b.isComm) AS available 
            FROM a, b
                WHERE a.ItemCode = b.ItemCode AND
                      a.id LIKE '%".php_variable1."%'
                      a.name LIKE '%".php_variable2."%'

问题是这个查询返回表b中所有条目的数量。例如,如果有 2 个代码为 123 的行,它将返回 2 行,如果有 4 个,则返回 4 行。我只需要 1 行。如果找到匹配项,则返回。

后来我听说了嵌套语句,所以我写道:

 SELECT DISTINCT    onHand, 
                    iscomm, 
                    avgPrc, 
                    (onHand - isComm) AS available
              FROM 
              (
                   SELECT id, 
                          name,
                          code,
                          lastpur,
                          lastprc
                       FROM a
                       WHERE id LIKE '"%.php_variable1.%"' AND
                             name LIKE '%".php_variable2."%'
              ) alias, b
          WHERE alias.code = b.code

但是我对嵌套不太熟悉,并且遇到了一些不太有用的错误(我正在使用 PDO,它只是读取“附近语法错误”),我无法调试。那么谁能告诉我哪里出了问题并帮助我解决这个问题?

最佳答案

试试这个:

$query = "SELECT a.*, b.*, (b.onHand - b.isComm) AS available 
          FROM a
          CROSS APPLY (
            SELECT TOP 1 b.*
            FROM b
            WHERE a.ItemCode = b.ItemCode
          ) b
          WHERE a.id LIKE '%".php_variable1."%'
            AND a.name LIKE '%".php_variable2."%' "

关于php - 返回多个结果的不同 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014872/

相关文章:

php - SilverStripe Fluent 自动翻译行为

php - Xdebug 由 PHPStorm 中的代码嗅探器触发

php - 提交PHP后,密码是否以文本形式发送?

PHP在Windows中创建具有777权限的目录

sql-server - GORM 和 SQL Server : auto-incrementation does not work

sql - SQL Server 中的嵌套窗口函数

mysql - SQL UNION MySQL 中的两个表

mysql - 删除无效记录相关的自身问题

java - Eclipse 和 Intellij DE - 无法连接到 mysql 数据库

sql - 计算销售价格以实现至少 10% 的利润