我在查询中的SQL查询

时间:2010-09-24 14:14:56

标签: sql mysql

我有2个表,我试图以特定方式组合 表1:'part_defs'表2 Items_part_values

value_defs中的

ID  | Name
-------------
  1 | color
  2 | size
  3 | weight
Items_part_values 中的

ItemID | valueID | Value
-------------------------
    10 | 1       | red
    11 | 1       | blue

我需要的是一个查询,对于给定项目,value_defs中的所有行都会出现,如果它们在Items_part_values中有值,则为该值。

因此对于第11项我想要

ID | Name   | Value
--------------------
 1 | color  | red
 2 | size   | NULL
 3 | weight | NULL

我是MySQL新手,在访问中我会创建一个以ItemID作为参数的子查询,然后在结果上使用value_defs进行左连接。

有没有办法在MySQL中做类似的事情?

由于

2 个答案:

答案 0 :(得分:0)

使用left join

SELECT * FROM Table1 LEFT JOIN Table2 USING (ID);

编辑:

SELECT * FROM part_defs LEFT JOIN Items_part_values ON part_defs.ID = Items_part_values.valueID;

答案 1 :(得分:0)

使用:

   SELECT p.id,
          p.name,
          ipv.value
     FROM PART_DEFS p
LEFT JOIN ITEMS_PART_VALUES ipv ON ipv.valueid = p.id
                               AND ipv.itemid = ?

替换“?”使用您要搜索的itemid 这意味着将返回所有PARTS_DEF行,如果ITEMS_PART_VALUES.valueidPART_DEFS.id值匹配,则会为您要查找的项目显示ITEMS_PART_VALUES.value值。如果没有匹配,则该列的值列将为NULL。

在JOIN与WHERE子句中指定条件时,OUTER JOIN有所不同。在JOIN中,在 JOIN发生之前应用条件,而在WHERE子句中, JOIN之后应用条件