【问题标题】:how to query join table如何查询连接表
【发布时间】:2019-11-03 00:49:11
【问题描述】:

我有两张这样的桌子

accounts
-------------
id|
username|
password|
email|
date

bans
-------------
id|
accounts|
ip|
admin|
reason|
date|

例如在禁令上显示这样的结果

5|NULL|0|1|hayo ketauan|2017-01-17 20:05:5

我想要bans.accountsbans.admin 显示accounts.username 我有这样的查询

SELECT `accounts`.`username`, `bans`.`ip`, `bans`.`admin`, `bans`.`reason`, `bans`.`date` 
FROM `accounts` 
INNER JOIN `bans`
  ON `accounts`.`id` = `bans`.`account`

得到结果

Naufal|NULL|1.1.1.1|1|hayo ketauan|2017-01-17 20:05:5

我想喜欢这个

Naufal|1.1.1.1|frans|hayo ketauan|2017-01-17 20:05:5

我对查询感到困惑。

【问题讨论】:

  • 需要一些表格数据示例。您的禁令示例行似乎与您的字段不匹配
  • 根据给出的信息,您认为我们可以帮助您神奇地将结果从第一行变为第二行吗?

标签: php mysql join


【解决方案1】:

要获取管理员的用户名,您需要使用bans 表的admin 值再次将JOIN 发送到accounts 表。这应该有效:

SELECT `a1`.`username`, `bans`.`ip`, `a2`.`username` AS admin, `bans`.`reason`, `bans`.`date` 
FROM `accounts` `a1`
INNER JOIN `bans` ON `a1`.`id` = `bans`.`account`
INNER JOIN `accounts` `a2` ON `a2`.`id` = `bans`.`admin`

【讨论】:

  • 呃,我的眼睛受伤了。
  • 它的工作非常感谢尼克。我还在学习mysql。感谢您的帮助。
  • @Strawberry 反引号太多(只是复制 OP 的风格)?或者您觉得有什么需要改进的地方?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 2023-03-06
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多