2012-04-16 23 views
0

改訂。私のSQLは限られているので、本当にあなたの助けに感謝します。あるヒットでは、ID($ ga_id)で2つのテーブルをそれぞれ別のテーブルへの内部結合でクエリしたい(テーブルはまったく同じカラムを持ち、親テーブルは互いに関係がない)。SQLクエリ複数の結合

SELECT p.* 
FROM net_5_postmeta AS pm 
INNER JOIN net_5_posts AS p ON pm.meta_value=p.ID 
WHERE pm.post_id = $ga_id 
AND pm.meta_key = '_thumbnail_id' 
ORDER BY p.post_date DESC 
LIMIT 4 

を次のように私は正常net_5_postmetaテーブルを照会することができますが、私はnet_5_postmetaテーブルとnet_7_postmetaテーブルを照会する(彼らは同じ列を持っている)、私はそれが線に沿って何かする必要がありますだと思いますの...

SELECT p.* 
FROM net_5_postmeta, net_7_postmeta AS pm 
INNER JOIN net_5_posts AS p ON pm.meta_value=p.ID 
INNER JOIN net_7_posts AS p ON pm.meta_value=p.ID 
WHERE pm.post_id = $ga_id 
AND pm.meta_key = '_thumbnail_id' 
ORDER BY p.post_date DESC 
LIMIT 4 
+1

これは答えがかなり複雑です。私が提案をすることができれば:1)テーブルの説明2)望ましい出力を見せてください。現在の質問の長さがちょっと長いので、あなたはもっと多くの反応を得るかもしれないと思います。あなたがより良い返答を得るのを助けることを願っています。 –

+0

最低限、PHPコードは必要ありません。そして 'net_5_'と' net_7_'テーブル間の(論理的、概念的な)接続は何ですか? –

+0

素晴らしいヒントマイケル、私は単純化するために全力を尽くしました。 – uknowit2

答えて

1

は、あなたは私が唯一の彼らがいたかのようにあなたがとテーブルを扱いたいと仮定することができ、親テーブルは関係がないことを言うように同じ。データをまとめてORDER BY/LIMITするには、union allを使用する必要があります。

SELECT * 
FROM 
(
    SELECT p.* 
    FROM net_5_postmeta AS pm 
    INNER JOIN net_5_posts AS p ON pm.meta_value=p.ID 
    WHERE pm.post_id = $ga_id 
    AND pm.meta_key = '_thumbnail_id' 

    UNION ALL 

    SELECT p.* 
    FROM net_7_postmeta AS pm 
    INNER JOIN net_7_posts AS p ON pm.meta_value=p.ID 
    WHERE pm.post_id = $ga_id 
    AND pm.meta_key = '_thumbnail_id' 
) united 
ORDER BY united.post_date DESC 
LIMIT 4 
+0

スーパー、それは、ありがとうございます! – uknowit2

関連する問題