脳が悪い。何かがクリックされていないのは、おそらく単純だと私は知っています。サブクエリを回避するために最善を尽くしていますが、避けられない場合があります。
左側のテーブル[]にはcards_types
11個のレコードがあり、右側のテーブル[ users_cards
]には1〜11個のレコードがあります。左側のテーブルと右側のテーブルにあるすべてのレコードを返す必要があります。右側のテーブルの唯一の注意点は、IF / ELSEステートメントを実行して、0の値を返すことcard_types
です。id
に見つかりませんusers_cards
。また、には外部キー制約がありcards_types
ます。id
=> users_cards
。type_id
(重要な場合)。
クエリ
SELECT
t.id,
t.slug,
t.label AS type_label,
t.points AS point_value,
IF (c.mtg_id IS NULL, 0, c.mtg_id) AS mtg_id,
IF (c.label IS NULL, 0, c.label ) AS card_label,
IF (uc.points IS NULL, 0, uc.points ) AS card_score
FROM cards_types t
JOIN users_cards uc
ON uc.type_id = t.id
JOIN cards c
ON c.id = uc.card_id
WHERE uc.user_id = 1
AND uc.season_id = 1
ORDER BY t.priority ASC