我有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行,并提供详细信息。
我究竟做错了什么 ?
您的问题是您的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;
仅合并实际需要的行。
我认为我也会在选择项中添加一列以标识表,但这是我的意思。
谢谢您的正确回答,对不起,您稍后再确认^^!