如何在没有UNION,JOIN或多选的情况下查询不相关的表

时间:2014-05-16 17:25:56

标签: mysql sql

我的问题是,我想从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值的完整列表,而我只想要产品名称或类别名称的成功结果。

1 个答案:

答案 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%' ;