アイブ氏は現在、以下のような問題があります。SQLは、選択最初のテーブルを結合する左一度
私はMySQLのクエリを持っている:
SELECT account.id as id, `cname`, `username`, `state`, `dow`
FROM account
LEFT JOIN zeitplanung
ON account.id = zeitplanung.user_id
WHERE account.hide = 0
and ifnull(zeitplanung.kw,43) = 43
and ifnull(zeitplanung.year, 2017) = 2017;
それは私が「の場合には、ユーザ名を返し、それらの値を言及します右の年とkwを選択し、結合テーブルにエントリがない場合はテーブルアカウントから値を返し、その他の値はすべてNULL
と返します。
しかし、カフェテリア(kw、年)に適合しないテーブル "zeitplanung"にエントリがある場合は、ユーザーネームを返しません。 「一致するエントリがWHERE文が勝った場合にはNULLとしてユーザ名と第二のテーブルのエントリを取得
- :
はどのように私はそのクエリを記述する必要がありませんフィット。
が、私の知る限り、このようなデフォルトのquerysはbouth –
サンプルデータ上で実行する必要がありますし、期待される:それらを保つために、彼らの
ON
句にOUTER
のテーブルの任意のフィルタリング条件を移動結果は意味のある回答に役立ちます。 –http://i.epvpimg.com/6Qnfbab.pngこれはテーブルの画面です。 例えばkw = 40の場合、上位クエリでは、 http://i.epvpimg.com/0BmQdab.png、kw = 41の場合はbouth id | s、ユーザー名、cnames以外は同じですが、残りのデータをNULLとして返します。 –