0

Table_Aにはentity_idがあります

Table_Bには、 attribute_id =1の関連するentity_idがあります

Table_Bには、 attribute_id =2の関連するentity_idがあります

  SELECT Table_B.value
    FROM  Table_A
    LEFT JOIN Table_B
    ON Table_A.entity_id = Table_B.entity_id
    WHERE Table_A.date =  '2012-7-30 00:00:00'
    AND Table_B.attribute_id = 1

attribute_id=1とattribute_id=2を1つのクエリにまとめたいと思います。

4

3 に答える 3

1

Table_Bにもう一度参加し、ASを使用して新しい名前(エイリアス)を付けることができます。

SELECT Table_B.value, Table_B2.value
FROM  Table_A
LEFT JOIN Table_B
ON Table_A.entity_id = Table_B.entity_id
LEFT JOIN Table_B AS Table_B2
ON Table_A.entity_id = Table_B2.entity_id
WHERE Table_A.date =  '2012-7-30 00:00:00'
AND Table_B.attribute_id = 1
AND Table_B2.attribute_id = 2

属性基準を移動して、何をしているのかを少し明確にすることもできます。

SELECT Table_B.value, Table_B2.value
FROM  Table_A
LEFT JOIN Table_B
ON Table_A.entity_id = Table_B.entity_id AND Table_B.attribute_id = 1
LEFT JOIN Table_B AS Table_B2
ON Table_A.entity_id = Table_B2.entity_id AND Table_B2.attribute_id = 2
WHERE Table_A.date =  '2012-7-30 00:00:00'
于 2012-07-30T22:16:08.697 に答える
1

さてあなたは2つの簡単な方法でそれを簡単に行うことができます

select 
    t1.entity_id,
    t2.attribute
from t1
left join t2 on t2.entity_id = t1.entity_id;

また

select 
    t1.entity_id,
    group_concat(t2.attribute) as Attr
from t1
left join t2 on t2.entity_id = t1.entity_id
group by t1.entity_id
于 2012-07-31T03:23:34.870 に答える
0

attribute_id = 1と2の両方を取得する場合は、条件にORを使用しないのはなぜですか。

SELECT Table_B.value
FROM  Table_A
LEFT JOIN Table_B
ON Table_A.entity_id = Table_B.entity_id
WHERE Table_A.date =  '2012-7-30 00:00:00'
AND (Table_B.attribute_id = 1 OR Table_B.attribute_id = 2)
于 2012-07-31T04:20:42.113 に答える