【问题标题】:Display MySql Data From Linked Tables using Id使用 Id 显示链接表中的 MySql 数据
【发布时间】:2012-09-30 22:20:06
【问题描述】:

我有 2 张桌子 - 活动和与会者。

我正在尝试使用 php 在通过 events.id 单击与会者列表并显示由 id 链接的与会者表中列出的与会者。

涉及的字段是 events.id 和 Attendees.id,用于显示该活动的参加者。

这是我目前拥有的。

SELECT events.*, attendees.* 
FROM attendees ON event.id = attendees.id 
WHERE event.id = attendees.id

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您的连接语法是隐式和显式JOIN 语法的错误组合,缺少JOIN 关键字,而是在WHERE 子句中重复连接条件。

    SELECT
      events.*, 
      attendees.* 
    FROM
      attendees 
      JOIN events ON event.id = attendees.id
    WHERE
      event.id = <event to find attendees for>
    

    请注意,不建议在 PHP 中使用 events.*, attendees.*,因为您将有重复的列名,PHP 无法访问这些名称。相反,要明确:

    SELECT
      /* Be explicit about the columns you select in a JOIN query */
      events.id AS event_id,
      events.name AS event_name,
      events.someothercol,
      attendees.id AS attendee_id,
      attendees.name AS attendee_name
    FROM
      attendees 
      JOIN events ON event.id = attendees.id
    WHERE
      event.id = <event to find attendees for>
    

    如果即使没有与会者,您仍想获取活动详细信息,请改用LEFT JOIN

    SELECT
      /* Be explicit about the columns you select in a JOIN query */
      events.id AS event_id,
      events.name AS event_name,
      events.someothercol,
      attendees.id AS attendee_id,
      attendees.name AS attendee_name
    FROM
      events
      /* LEFT JOIN will return event details even when there are no attendees */
      LEFT JOIN attendees ON event.id = attendees.id
    WHERE
      event.id = <event to find attendees for>
    

    【讨论】:

      【解决方案2】:

      如果你有两个这样的表:

      events:  
        ID  
        ...  
      
      attendees:  
        event  
        ...  
      

      您需要获取与他们的活动相关的参与者列表,试试这个:

      SELECT * FROM attendees LEFT OUTER JOIN events ON attendees.event = events.ID
      

      如果不是,请澄清您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-09
        • 2011-10-06
        • 2012-10-22
        • 1970-01-01
        • 2014-05-26
        • 2023-03-31
        相关资源
        最近更新 更多