首页 > 解决方案 > PDO 使用 where 子句选择多个表

问题描述

我有 4 个相同的表,它们具有相同的行名和不同的值。我已经从另一个页面发送了 $_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 行以及详细信息。

我究竟做错了什么 ?

标签: phpmysqlselectpdo

解决方案


您的问题是您的 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;

仅联合实际想要的行。

在我看来,我还会在选择中添加一列来识别表格,但我。


推荐阅读