我在下面的查询效果很好。
SELECT `Despatch`.`DespatchNumber` , `Despatch`.`Product` ,
`Stock`.`ProductNumber` , `Stock`.`Description` ,
`Stock`.`ProductGroup` , `Stock`.`Size` , `Stock`.`IPICODE` , `Stock`.`Fit` ,
`Stock`.`62`
FROM Stock , Despatch
WHERE `Despatch`.`DespatchNumber` = '" . $Despatch . "'
AND `Despatch`.`Product` = `Stock`.`ProductCode`
我的问题是我想扩展它使用$ Despatch的值来使用OR函数搜索同一个表中的另一列。因此查询将查看Despatch Number,如果找不到匹配,则查看订单号,如下所示。它不起作用,我的mysql服务器只是挂起试图运行此查询。
SELECT `Despatch`.`DespatchNumber` , `Despatch`.`Product` ,
`Stock`.`ProductNumber` , `Stock`.`Description` , `Stock`.`ProductGroup` , `Stock`.`Size` , `Stock`.`IPICODE` , `Stock`.`Fit` , `Stock`.`62`
FROM Stock , Despatch
WHERE `Despatch`.`DespatchNumber` = '" . $Despatch . "'
OR `Despatch`.`OrderNumber` = '" . $Despatch . "'
AND `Despatch`.`Product` = `Stock`.`ProductCode`
答案 0 :(得分:1)
您需要围绕OR
子句括号:
WHERE (`Despatch`.`DespatchNumber` = '" . $Despatch . "'
OR `Despatch`.`OrderNumber` = '" . $Despatch . "')
AND `Despatch`.`Product` = `Stock`.`ProductCode`
我强烈建议您在执行联接时明确使用JOIN
关键字。这不仅是最佳实践,而且还可以防止在这种情况下发生错误。
SELECT -- ...columns...
FROM Stock AS S
JOIN Despatch AS D
ON D.Product = S.ProductCode
WHERE D.DespatchNumber = 'DN001234'
OR D.OrderNumber = 'DN001234'