加入2表SQL - 其中第2条行在一个表中

时间:2015-08-24 09:03:34

标签: mysql sql

我有一个连接两个表的语句。但是,我需要WHERE子句匹配第二个表中的两行。以下是两个表格:

b_iblock_element

ID  |  IBLOCK_ID  | ACTIVE | ACTIVE_FROM  | ACTIVE_TO
1   |  3          | Y      | 15/09/2015   | 22/09/2015
2   |  3          | Y      | 11/09/2015   | 20/09/2015

b_iblock_element_property

ID  |  IBLOCK_PROPERTY_ID  | IBLOCK_ELEMENT_ID  | VALUE
88  |  4                   | 1                  | 22
89  |  7                   | 1                  | 14

所以我需要从ID = IBLOCK_ELEMENT_ID IBLOCK_PROPERTY_ID 4 = 22 AND IBLOCK_PROPERTY_ID 7 = 14时的第一个表格中提取结果。我的问题是我不知道如何在where子句中包含第二个表中的两个行,因为我只能在一个子句中使用它。这是一个:

`SELECT a.ID, a.IBLOCK_ID, a.ACTIVE, a.ACTIVE_FROM, a.ACTIVE_TO, a.NAME, 
b.ID, b.IBLOCK_PROPERTY_ID, b.IBLOCK_ELEMENT_ID, b.VALUE 
FROM b_iblock_element a INNER JOIN b_iblock_element_property b 
ON a.ID = b.IBLOCK_ELEMENT_ID WHERE a.IBLOCK_ID = '3' AND a.ACTIVE = 'Y' 
AND b.IBLOCK_PROPERTY_ID = '4' AND b.VALUE ='22'`

现在我只需要合并:

  

AND b.IBLOCK_PROPERTY_ID =' 7' AND b.VALUE =' 14'

但显然不能把它放在另一排,而且它不起作用。

帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

SELECT *
FROM b_iblock_element b1
JOIN b_iblock_element_property b2 ON b1.ID=b2.IBLOCK_ELEMENT_ID
WHERE (b2.IBLOCK_PROPERTY_ID=4 AND b2.value=22) OR (b2.IBLOCK_PROPERTY_ID=7 AND b2.value=14);