2

我有两张看起来像这样的桌子..

table_gb:

    ID: 作者: 邮箱: 登录:
    1. 约翰·多伊 john@email.com 1
    2. 詹·史密斯 jenn@email.net 1
    3.迈克尔 mich@email.co.uk 0


表用户:

    ID: 用户名: 电子邮件:
    1. Jenstar jenn@email.net
    2. 诺克斯维尔 knox@email.org
    3. JohnDoe john@email.com`


现在我想做的是创建一个 SQL 语句,从 table_gb 和 IF "Login" == 1 中提取所有字段,然后我希望它继续并从 table_user 中提取用户名和匹配的电子邮件。 .

返回这样的东西..

    ID: 作者: 用户名: 电子邮件: 登录:
    1. John Doe JohnDoe john@email.com 1
    2. Jenn Smith Jenstar 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 回答