Mysql 具有多行使用的内部联接

Mysql 具有多行使用的内部联接,mysql,Mysql,我需要从members表中选择2行来获取name和id,并且需要从message表中获取所有行。这是我到目前为止得到的任何提示或帮助都是非常感谢的 编辑 桌子 如果你把db结构放在这里会很有帮助。假设您的表“member_messages”包含所有要读取的消息,那么您需要将此表与“members”表联接两次,以检索“from”和“to”成员的名称 您可能正在寻找类似以下内容: SELECT message.message_time, message.message_body,

我需要从members表中选择2行来获取name和id,并且需要从message表中获取所有行。这是我到目前为止得到的任何提示或帮助都是非常感谢的 编辑 桌子


如果你把db结构放在这里会很有帮助。假设您的表“member_messages”包含所有要读取的消息,那么您需要将此表与“members”表联接两次,以检索“from”和“to”成员的名称

您可能正在寻找类似以下内容:

SELECT
    message.message_time, message.message_body,
    member_to.id, member_to.display_name,
    member_from.id, member_from.display_name
FROM   
    member_messages AS message
JOIN   
    members AS member_to ON members.id = member_messages.message_to 
JOIN   
    members AS member_from ON members.id = members_messages.message_from

如果数据库系统中保留了一些单词,请更改它们。

如果将数据库结构放在此处,将非常有用。假设您的表“member_messages”包含所有要读取的消息,那么您需要将此表与“members”表联接两次,以检索“from”和“to”成员的名称

您可能正在寻找类似以下内容:

SELECT
    message.message_time, message.message_body,
    member_to.id, member_to.display_name,
    member_from.id, member_from.display_name
FROM   
    member_messages AS message
JOIN   
    members AS member_to ON members.id = member_messages.message_to 
JOIN   
    members AS member_from ON members.id = members_messages.message_from

如果数据库系统中保留了某些单词,请更改它们。

您的联接几乎正确,但您需要参考在“选择”列表中的联接中分配到的和从中分配的表别名,而不是直接引用成员。由于“收件人”和“发件人”都是,所以您必须对它们都进行反报价

SELECT member_messages.message_to, 
       member_messages.message_from, 
       member_messages.message_time, 
       member_messages.message_body,
       /* Select cols from both aliases of members, with column aliases */
       `to.display_name AS to_name,
       `to`.id AS to_id ,
       `from`.display_name AS from_name,
       `from`.id AS from_id 
/* First reference to members as `to` */
FROM members AS `to`
INNER JOIN member_messages 
   ON member_messages.message_to = `to`.id
/* Second reference to members as `from` */
INNER JOIN members AS `from` 
   ON member_messages.message_from = `from`.id
WHERE member_messages.message_to = '$userId'

联接几乎是正确的,但您需要引用在“选择”列表的联接中分配给的和从中分配的表别名,而不是直接引用成员。由于“收件人”和“发件人”都是,所以您必须对它们都进行反报价

SELECT member_messages.message_to, 
       member_messages.message_from, 
       member_messages.message_time, 
       member_messages.message_body,
       /* Select cols from both aliases of members, with column aliases */
       `to.display_name AS to_name,
       `to`.id AS to_id ,
       `from`.display_name AS from_name,
       `from`.id AS from_id 
/* First reference to members as `to` */
FROM members AS `to`
INNER JOIN member_messages 
   ON member_messages.message_to = `to`.id
/* Second reference to members as `from` */
INNER JOIN members AS `from` 
   ON member_messages.message_from = `from`.id
WHERE member_messages.message_to = '$userId'


你真的可以在mySql中使用保留关键字作为列名吗?你对哪个列名发表评论?换句话说,我不知道你是否可以从中调用列名,除非你把它放在引号中。。再说一次,我对mySql不是很了解..啊,那也会改变这一点..你真的可以在mySql中使用保留关键字作为列名吗?你对哪个列名发表评论?换句话说,我不知道你是否可以从中调用列名,除非你把它放在引号中。。再说一次,我对mySql不是很了解..啊,我也会改变这一点的,我肯定错过了一些东西hmm@kabuto178那你得到了什么?错误没有争吵?什么?没有行,如果这有帮助,1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第行“to.id AS to_id,from”附近使用的正确语法5@kabuto178只是'from`.display\u name line.XD上缺少一个结束引号,没有看到。非常感谢,我接受了。谢谢你的帮助我一定错过了什么hmm@kabuto178那你得到了什么?错误没有争吵?什么?没有行,如果这有帮助,1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第行“to.id AS to_id,from”附近使用的正确语法5@kabuto178只是'from`.display\u name line.XD上缺少一个结束引号,没有看到。非常感谢,我接受了。谢谢你的帮助