実行MySQL 5.0.88
していて、 と という 2 つのテーブルからデータを選択する必要がありarticles
ますmedia
。
type="img"
画像をサーバーにアップロードするとき、不要な上書きを避けるために、ユーザーのすべての記事を照会し、メディア テーブル (フィールド ) にパスが既に指定されているかどうかを確認する必要があります。
クエリにを含めることだけを望んでいましたが、m.type
機能させることができません。
私のクエリは次のようになります。
SELECT DISTINCT a.style, a.filename, a.path, m.type
FROM articles AS a
LEFT JOIN mnedia AS m
ON a.iln = m.iln
WHERE
a.iln = id_12345
AND m.type = "img"
AND m.type IS NOT NULL
これにより、ユーザーid_12345のすべての記事(正しい)が得られますが、メディアテーブルには article のレコードが1つしかありませんが、type
フィールドは常にです。img
abc
質問:テーブルにリストされていない記事と、テーブルにリストされている記事( など
) を表示しているユーザー (作業中) のすべての記事を返すには、どのように照会する必要がありますか?type=NULL
media
type="img"
media
abc
手伝ってくれてありがとう!
EDIT : テーブルarticles
にはレコードが含まれる場合があります:
abc
d
e
f
g
テーブルには次のmedia
ものが含まれる場合があります
abc type=img
クエリは次を返す必要があります。
abc type=img
d type=NULL
e type=NULL
f type=NULL
g type=NULL
EDIT :この画像のように、 にない
すべてのレコードを取得してもかまいません。2番目の結合の左側 ("b.Key IS NULL)articles
media
解決策: わかりました。両方のテーブルを結合するときに、user_id 以外の別のフィールドを確認する必要がありました。これがどのように機能するかです:
SELECT DISTINCT a.style, a.filename, a.path, m.type
FROM articles AS a
LEFT JOIN mnedia AS m
ON a.iln = m.iln
AND a.style= m.style
WHERE
a.iln = id_12345
AND ( m.type = "img" OR m.type IS NULL )
あなたの提案に感謝します!