温馨提示:本文翻译自stackoverflow.com,查看原文请点击:php - PDO select multiple table with where clause
mysql pdo php select

php - PDO使用where子句选择多个表

发布于 2020-04-09 11:23:00

我有4个相同的表,相同的行名带有diffrend值。我已经从另一页发送了$ _GET ['urun_barkod']代码,因此我想在第二页上显示匹配的行以及详细的行信息。

$barko=$_GET['barkod'];
$urunsor=$db->prepare("SELECT * FROM kanyon UNION ALL SELECT * FROM zorlu UNION ALL SELECT * FROM 
tesvikiye UNION ALL SELECT * FROM citys where urun_barkod=:barkod");
$urunsor->execute(array(
    'barkod' => $barko
));
$uruncek=$urunsor->fetch(PDO::FETCH_ASSOC);

但我无法正确获得结果。只是想在我的第二页上显示匹配的barkod行,并提供详细信息。

我究竟做错了什么 ?

查看更多

提问者
Alper Aslan
被浏览
61
nbk 2020-02-01 09:07

您的问题是您的where子句仅在最后一个Select上起作用

因此,您需要封装联合,然后执行where子句

喜欢

SELECT 
  * 
FROM
(SELECT * FROM kanyon UNION ALL SELECT * FROM zorlu UNION ALL SELECT * FROM 
tesvikiye UNION ALL SELECT * FROM citys) a
 where urun_barkod=1

问题是您从所有表中收集了所有数据并进行合并,最后,您删除了所有不必要的行,这根本没有意义,因为这需要时间和资源。

所以做得更好

SELECT * FROM kanyon  where urun_barkod=1
UNION ALL SELECT * FROM zorlu  where urun_barkod=1 
UNION ALL SELECT * FROM tesvikiye  where urun_barkod=1
UNION ALL SELECT * FROM citys where urun_barkod=1;

仅合并实际需要的行。

我认为我也会在选择项中添加一列以标识表,但这是我的意思。