2016-04-08 13 views
0

私はphpページを設定して、データ入力に与えられた1つの条件に基づいてデータベースに問い合わせることで、それぞれが複数の一時テーブルに入れられる複数のオプションがあります。したがって、入力がage> 10でshoesize> 6およびheight> 60の場合、table0はデータの年齢> 10でtable1はデータshoesize> 6のみであり、表2は唯一のtable0、table1およびtable2の3つの一時表があります。データの高さ> 60.mysqlの複数のテーブルを交差する方法

これらは交差する方法がわかりますので、すべての要件がage> 10、shoesize> 6およびheight> 60の条件を満たす結果が得られます。「WHERE EXISTS」節それ以下では動作しません。

SELECT * 
FROM table0 t0 
WHERE EXISTS 
    (SELECT * 
    FROM table1 t1 
    WHERE EXISTS 
     (SELECT * 
      FROM table2 t2 
      WHERE t0.age = t1.age = t2.age 
      AND t0.shoesize = t1.shoesize = t2.shoesize 
      AND t0.height = t1.height = t2.height)); 
+0

サンプルデータを提供できますか? –

+0

データは、年齢、性別、靴のサイズ、体重、身長、目の6つの列で構成されています。これはデータベースの1つのテーブルに格納され、一時テーブルは元のテーブルのサブセットに過ぎず、それぞれに1つの条件が適用されます。 – Steven

答えて

0

テーブルのプライマリキーに頼ることなくこのようなクエリが煩雑になることに注意してください。プライマリキーを追加することをお勧めします。

前記、あなたが必要とするクエリがすでに試みられていたものに非常に近いです:

SELECT * 
FROM table0 t0 
WHERE EXISTS (
      SELECT 1 
      FROM table1 t1 
      WHERE t1.age = t0.age AND t1.gender = t0.gender 
      AND t1.shoesize = t0.shoesize AND t1.weight = t0.weight 
      AND t1.height = t0.height AND t1.eyes = t0.eyes) AND 
     EXISTS (
      SELECT 1 
      FROM table2 t2 
      WHERE t2.age = t0.age AND t2.gender = t0.gender 
      AND t2.shoesize = t0.shoesize AND t2.weight = t0.weight 
      AND t2.height = t0.height AND t2.eyes = t0.eyes) 

:上記のクエリは、値のどれもがNULLでない場合にのみ動作します。

+0

これは動作しません:/クエリに不適切な構文(つまり、オブジェクトではないfetch_array)のエラーが発生しました – Steven

+0

@Stevenクエリにはfetch_arrayが含まれていません。 –

+0

私はmysqliクエリステートメントでクエリを使用し、次にfetch_arrayを使用して結果を取得します。これは、クエリステートメントが無効な場合に失敗します。 – Steven

関連する問題