1

イベントと参加者の2つのテーブルがあります。

events.idを介して出席者のリストをクリックし、idでリンクされた出席者テーブルにリストされている出席者を表示するためにphpを使用しようとしています。

関係するフィールドはevents.idとattendees.idであり、そのイベントの参加者を表示します。

これは私が現在持っているものです。

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

2 に答える 2

1

結合構文は、暗黙的構文と明示的構文の誤った組み合わせであり、キーワードがJOIN欠落しており、代わりに句内の結合条件が重複しています。JOINWHERE

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

PHPでアクセスできなくなる列名が重複するため、PHPで使用することはお勧めできません。events.*, attendees.*代わりに、明示してください。

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>
于 2012-09-30T22:26:58.387 に答える
0

このようなテーブルが2つある場合:

events:  
  ID  
  ...  

attendees:  
  event  
  ...  

そして、あなたは彼らのイベントに関連する出席者のリストを取得する必要があります、これを試してください:

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

そうでない場合は、質問を明確にしてください。

于 2012-09-30T22:30:37.640 に答える