2

次のクエリがあります。

SELECT A.id FROM logsen_alertes A
WHERE  
( SELECT LA2.type_colocation_id
  FROM logsen_liaisons_annonces_types_colocations LA2
  WHERE LA2.annonce_id = 25 AND LA2.annonce_type = 4
) 
IN
( SELECT L4.souhait
  FROM logsen_liaisons_alertes_souhaits L4
  WHERE L4.alerte_id = A.id
)

このクエリは、最初のサブクエリが 1 つの値のみを返す場合にうまく機能します。これは、一連の値の中から 1 つの一意の値を探して IN() が機能するためです。最初のサブクエリが 2 つ以上の値を返すと、MySQL は「サブクエリが複数の行を返します」と返します。最初のサブクエリが複数の値を返す場合、クエリを機能させるにはどうすればよいですか? 「[これらの値のいずれか] で見つかった [これらの値のいずれか] の場所」のようなものですか?

4

3 に答える 3

1

試す:

SELECT DISTINCT A.id FROM logsen_alertes A
JOIN logsen_liaisons_alertes_souhaits L4 ON L4.alerte_id = A.id
JOIN logsen_liaisons_annonces_types_colocations LA2
  ON LA2.type_colocation_id = L4.souhait AND LA2.annonce_id = 25 AND LA2.annonce_type = 4
于 2013-03-08T11:42:16.640 に答える
1

これを試して:

SELECT 
        A.id 
FROM 
        logsen_alertes A
        INNER JOIN logsen_liaisons_alertes_souhaits L4
               ON L4.alerte_id = A.id
        INNER JOIN logsen_liaisons_annonces_types_colocations LA2
               ON LA2.type_colocation_id = L4.souhait 
WHERE 
         LA2.annonce_id = 25 AND LA2.annonce_type = 4  
于 2013-03-08T11:42:38.767 に答える
0
SELECT DISTINCT A.id FROM logsen_alertes AS A
INNER JOIN logsen_liaisons_alertes_souhaits AS L4
        ON (L4.alerte_id = A.id)
INNER JOIN logsen_liaisons_annonces_types_colocations AS LA2
        ON (LA2.type_colocation_id = L4.souhait)
WHERE LA2.annonce_id = 25 AND LA2.annonce_type = 4

動作するはずです

于 2013-03-08T11:43:25.617 に答える