2016-05-25 15 views
0

私は10k +ローのサッカーデータベースを持っています。私の目標は、自分のIDで1人の選手を選び、同じリーグまたはクラブにいるか、同じ国籍の他の選手をすべて獲得することです。 私のクエリは、これまでのところ、次のとおりです。MySQLサブクエリ構文+ ZF2構文

SELECT * 
FROM `characteristics` 
WHERE `nation` = (SELECT `nation` 
        FROM `characteristics` 
        WHERE `id` = "1") 
OR `club` = (SELECT `club` 
        FROM `characteristics` 
        WHERE `id` = "1") 
OR `league` = (SELECT `league` 
        FROM `characteristics` 
        WHERE `id` = "1") 

私はそれが1434行を返しますので、クエリは、私が期待どおりに動作しませんと思います。たとえば、Nation = Argentina,League = BBVAClub = FC Barcelonaは約1500+行を返します。

多分あなたはこのサブクエリで私を助けることができます。

もう1つの問題は、ZF2のサブクエリ構文です。私はstackoverflow上で何かを見つけましたが、どこに何かを置く構文を理解できません。

EDIT:DBデータの一例

id firstname lastname age height nation  club   league 
1 Lionel Messi 28 170 cm Argentina FC Barcelona Liga BBVA 
+0

'特性はあなたの選手のテーブルですか?いくつかのデータを表示できますか? –

+0

はい、テーブルの名前です。編集されたデータの例。 –

+0

重複はありますか? – Wilt

答えて

0

私はこれで作業していないのです、私はZF2に関してはお答えできません。あなたのSQLの質問については、私はあなたがこのために探していると思う

SELECT C1.`id` as playerid, 
     C1.firstname as playerfirstname, 
     C1.lastname as playerlastname, 
     C2.* 
FROM `characteristics` C1 
INNER JOIN `characteristics` C2 
    ON (C1.`nation` = C2.`nation` OR 
     C1.`club` = C2.`club` OR 
     C1.`league` = C2.`league`) 
WHERE C1.`id` = "1" 

アイデアは上(別名C2characteristics(別名C1)からプレーヤーを取得するために、その後、再びテーブルcharacteristicsに参加することです指定した列

+0

お返事ありがとうございます。しかし、あなたのクエリを使用すると、上記のような行が同じ量得られます。 –