我有很多包含产品信息的表格。我在此特定查询中从中拉出的每个表上的列具有完全相同的列名。我一直试图通过UNION ALL来做这件事,但由于某种原因,它会抛出一个错误,说非对象,但所有的列名都是正确的。
我正在使用我在网上找到的格式。但显然有些不对劲。还有更多的桌子;然而,这就是它的开始(2)。如果我不需要,我宁愿不必使用唯一的表缩写对联合中的每个select语句进行编码。
如果有更好的方法,我不必使用union。
所有表共享Product_Categories和Product_Sub_Category上的数据。
每个表唯一独有的是id和part_number。
$product_query = $db1q->query("
SELECT f.id,f.part_number,f.cat,f.subcat,f.table_name FROM
(
SELECT t.id,t.part_number,psc.name as subcat,c.name as cat, c.table_name FROM Steel_Strapping as t JOIN Product_Sub_Category as psc ON t.subcat = psc.id JOIN Product_Categories as c ON psc.category = c.id ORDER BY c.sort_order,psc.sort_order,t.sort_order
UNION ALL
SELECT t.id,t.part_number,psc.name as subcat,c.name as cat, c.table_name FROM Product as t JOIN Product_Sub_Category as psc ON t.subcat = psc.id JOIN Product_Categories as c ON psc.category = c.id ORDER BY c.sort_order,psc.sort_order,t.sort_order
) f");
我的最终结果是共享列名称的所有产品的完整列表。例如:$ result ['part_number']将从联合中列出的所有表中提取部件号。
任何帮助都将不胜感激。
答案 0 :(得分:0)
我在玩代码时找到了解决方案。我必须在父选择语句
中添加括号(select ...)UNION JOIN(select ...)