2012-03-07 14 views
0

これに関連するいくつかのスレッドを読んだことがありますが、私にとってうまくいく解決策を突き止めることができませんでした。おそらく私が遭遇したいくつかの例を誤解しているかもしれません。MySQLのIFと左結合 - 構文?

これは私が達成しようとしていることを理解するのに役立つ既存のクエリです。

SELECT type, refid, status, shortname, IsStore, IsProduct 
FROM user_contributions c 
WHERE UserID='#getuser.UserID#' 
ORDER BY ID DESC 
LIMIT 20 

'IsProduct'と 'IsStore'の値は、常にNULLまたはYesのいずれかであり、各行はどちらか一方を持ちます。

私がする必要があるのは、 'IsStore'または 'IsProduct'(まだ私と一緒ですか?)の値に応じて、 'stores'テーブルまたは 'products'テーブルの左結合です。たとえば、IsStoreの値がyesの場合、LEFT JOINストアを追加します。WHERE ID = refid

結果フィールドの一貫性を保つ必要があると仮定して、storenameまたはproductnameに「AS title」を使用します一貫した出力。

私はこれを特によく説明しているかどうかはわかりませんので、その場合は明確にしてください。どんな助けでも大歓迎です!

+1

質問は何ですか? –

答えて

2

だけにその条件を追加参加:

SELECT type, refid, status, shortname, IsStore, IsProduct 
FROM user_contributions c 
LEFT JOIN stores ON (stores.id = c.refid AND IsStore = "Yes") 
LEFT JOIN products ON (products.id = c.refid AND IsProduct = "Yes") 
WHERE UserID='#getuser.UserID#' 
ORDER BY ID DESC 
LIMIT 20 
+0

うわー!ありがとうジム、私はそれが簡単なことを全く考えていませんでした - 私が出会ったものはそれよりもはるかに複雑でした!ありがとう! – Lee

+0

@Lee問題ありません:) – Jim