多个表中的主产品列表,其列名完全相同

时间:2018-05-03 18:50:55

标签: mysql mysqli

我有很多包含产品信息的表格。我在此特定查询中从中拉出的每个表上的列具有完全相同的列名。我一直试图通过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']将从联合中列出的所有表中提取部件号。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我在玩代码时找到了解决方案。我必须在父选择语句

中添加括号(select ...)UNION JOIN(select ...)