0

基本上我只是想完成一个我正在进行的项目,在找到用于此 SQL 语句的正确语法时遇到了一些麻烦。

基本上我有两个不同的表:

Customer:
companyid
companyname
etc etc.

Machine:
machineid
model
serial
companyid

现在通常这很容易,因为我只是加入 companyid,但是,这次我需要做的稍微不同。我需要返回使用客户 ID 搜索的客户表中的特定数据,以及使用机器 ID 搜索的机器表中的特定数据。

我很累,所以如果答案直盯着我,我会道歉,但这是我正在做的事情,我再次知道它很可能是错误的,所以我很抱歉我尝试搜索但无济于事:

$customerquery = mysql_query("
            SELECT customer.companyid, customer.companyname, 
                   customer.companyaddress, customer.postcode, 
                   customer.telephone, customer.mobile, 
                   machine.machineid, machine.model, 
                   machine.serial 
            FROM customer, machine 
            WHERE customer.companyid=$customerid AND 
                  machine.machineid=$machineid
            ");

任何帮助将不胜感激,谢谢!

4

1 回答 1

1

您当前的查询会产生笛卡尔积,因为您错过了应该在哪里连接表的条件。这是 join ( SQL-89)的旧语法

SELECT customer.companyid, customer.companyname, 
       customer.companyaddress, customer.postcode, 
       customer.telephone, customer.mobile, 
       machine.machineid, machine.model, 
       machine.serial 
FROM   customer, machine 
WHERE  customer.companyid = $customerid AND 
       machine.machineid = $machineid AND
       customer.companyid = machine.companyid -- you missed this one producing
                                              -- cartesian product

join ( SQL-92)的新语法

SELECT customer.companyid, customer.companyname, 
       customer.companyaddress, customer.postcode, 
       customer.telephone, customer.mobile, 
       machine.machineid, machine.model, 
       machine.serial 
FROM   customer INNER JOIN machine 
          ON customer.companyid = machine.companyid 
WHERE  customer.companyid = $customerid AND 
       machine.machineid = $machineid
于 2012-08-28T02:09:08.540 回答