私はaという名前のテーブルと、異なるAPI(twitter、foursquare)のデータを持つテーブルを持っています。この例では、a.api_typeの値 bになるはずです。私が最後に望むのは、アクティブなAPI(api_foursquareまたはapi_twitterのいずれか)から正しいアバターを取得できることです。CASEとINNER JOINのMySQLクエリエラー
私はこれをこのクエリでしばらく働かせようとしていますが、このエラーが発生しています。 SQLは、私の最強のポイントではありませんので、この問題を解決する方法上の任意のヒントは素晴らしいことだ:)
"[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
INNER JOIN b ON b.user_id = a.user_id at line 11"
SELECT a.user_id,
a.api_type,
b.avatar,
b.user_id
(CASE
WHEN a.api_type = 0 THEN api_foursquare
WHEN a.api_type = 1 THEN api_twitter
END) as b
FROM a WHERE a.cookie_hash = :cookie_hash
INNER JOIN b ON b.user_id = a.user_id
最初の 'ON'条件に' AND a.api_type = 0'を追加します(2番目の '= 1')。 –
次に、' COALESCE(b.avatar、c.avatar)as avatar'を使用して、 –
@ypercube素晴らしい提案!私はそれを組み込む答えを編集しました。私は、クエリがより読みやすく、さらに多くのAPIタイプのテーブルを追加する方が簡単だと思います。ありがとう! – dasblinkenlight