1

次のようなクエリがあるとします。

SELECT type_person FROM tbl_event WHERE id_animal = 1;

これにより、イベントの全データを取得するために他のテーブルから参加する人のタイプとターゲット テーブル (この場合、これは「worker」を返します) が得られます。これで参加するには、「ワーカーテーブルのように:

SELECT  a.*,b.*,z.*
FROM    tbl_event a
        left JOIN tbl_worker b
            ON a.type_person = b.type_person
        left JOIN tbl_animal z
            ON   z.id_animal = a.id_animal 
        WHERE z.id_animal = 1;

JOIN tbl_worker b の左の部分を次のように変更する方法はありますか:

SELECT  a.*,b.*,z.*
FROM    tbl_event a
        left JOIN (SELECT type_person FROM tbl_event WHERE id_animal = 1)
            ON a.type_person = b.type_person
        left JOIN tbl_animal z
            ON   z.id_animal = a.id_animal 
        WHERE z.id_animal = 1;

ここにフィドルがあります

4

2 に答える 2

1

確かに、次のようなことをする必要があります:

SELECT  a.*,b.*,z.*
FROM    tbl_event a
        left JOIN (SELECT type_person FROM tbl_event WHERE id_animal = 1) as b
            ON a.type_person = b.type_person
        left JOIN tbl_animal z
            ON   z.id_animal = a.id_animal 
        WHERE z.id_animal = 1;

基本的に、エイリアスがありません(bこの場合)

ここに更新されたフィドルがあります

于 2013-03-11T17:39:33.613 に答える
1

もちろんできます。あなたはそのように意味します

 SELECT  a.*,b.*,z.*
 FROM    tbl_event a
    left JOIN (SELECT type_person FROM tbl_event WHERE id_animal = 1) b
        ON a.type_person = b.type_person
    left JOIN tbl_animal z
        ON   z.id_animal = a.id_animal 
  where z.id_animal = 1;

デモ

クエリで作成するのを忘れただけですAS b

于 2013-03-11T17:40:52.740 に答える