2

私はこのように見える2つのテーブルを持っています..

テーブルGB:

    ID: 作成者: 電子メール: ログイン:
    1. ジョン・ドウ john@email.com 1
    2. ジェン・スミス jenn@email.net 1
    3. マイケル mich@email.co.uk 0


テーブルユーザー:

    ID: ユーザー名: メールアドレス:
    1. ジェンスター jenn@email.net
    2. ノックスビル knox@email.org
    3. JohnDoe john@email.com`


これでやりたかったことは、table_gb と IF "Login" == 1 からすべてのフィールドを取得する SQL ステートメントを作成してから、それを先に進めて、table_user から一致する電子メールでユーザー名を取得することです.. .

このようなものを返す..

    ID: 作成者: ユーザー名: 電子メール: ログイン:
    1. ジョン・ドウ JohnDoe john@email.com 1
    2. ジェン・スミス ジェンスター jenn@email.net 1
    3. マイケル mich@email.co.uk 0


基本的に table_user からユーザー名のみを取得しますが、login が 1 に設定されている場合のみ取得しますか? 私は基本的にすべてを試しましたが、何もうまくいかなかったようです!...

4

2 に答える 2

5

LEFT JOINテーブル間で a を使用してから、CASE式を使用してユーザー名を表示できるはずです。

select g.id,
  g.author,
  case when g.login = 1 then u.username else '' end username,
  g.email,
  g.login
from table_gb g
left join table_user u
  on g.email = u.email;

デモで SQL Fiddle を参照してください

于 2013-05-15T10:54:29.000 に答える
3

単に使用するLEFT JOIN

   SELECT g.ID, g.Author, u.Username, g.Email, g.Login
     FROM table_gb g 
LEFT JOIN table_user u
       ON g.Email = u.EMail;

出力:

╔════╦════════════╦══════════╦══════════════════╦═══════╗
║ ID ║   AUTHOR   ║ USERNAME ║      EMAIL       ║ LOGIN ║
╠════╬════════════╬══════════╬══════════════════╬═══════╣
║  1 ║ John Doe   ║ JohnDoe  ║ john@email.com   ║     1 ║
║  2 ║ Jenn Smith ║ Jenstar  ║ jenn@email.net   ║     1 ║
║  3 ║ Michael    ║ (null)   ║ mich@email.co.uk ║     0 ║
╚════╩════════════╩══════════╩══════════════════╩═══════╝

このSQLFiddleを参照してください

于 2013-05-15T10:54:17.543 に答える