我的问题是,我想从2个不同的表中查询几个不同的列,它是针对搜索功能,我希望结果显示数组中的类别和产品组合。
如果我错了,请纠正我,但我不能使用JOIN
因为这些表格没有任何关系。
我无法使用UNION
,因为我想从每个表中选择的列数没有一致性。
我尝试过简单地从表组合中选择列的组合,但这会将所有内容相乘。然而,Ill会显示最后一个选项的代码,因为可能有一种方法可以调整它以使其工作......
SELECT pd.product_id, pd.name, pd.meta_keyword, pd.description, cd.category_id,
cd.name AS 'category_name'
FROM oc_product_description AS pd, oc_category_description AS cd
WHERE pd.name LIKE '%$word%'
OR cd.name LIKE '%$word%';
这会为oc_category_description
的每次成功点击返回pd.name
category_name值的完整列表,而我只想要产品名称或类别名称的成功结果。
答案 0 :(得分:2)
如果您需要UNION
,则必须添加各个表中的所有列以及其他表中未提供的列中的NULL
值:
SELECT pd.product_id, -- pd columns
pd.name ,
pd.meta_keyword,
pd.description,
NULL AS category_id, -- cd columns
NULL AS category_name
FROM oc_product_description as pd
WHERE pd.name LIKE '%$word%'
UNION ALL
SELECT NULL,
NULL,
NULL,
NULL,
cd.category_id ,
cd.name AS category_name
FROM oc_category_description as cd
WHERE cd.name LIKE '%$word%' ;