0

タイトルが誤解を招く場合は申し訳ありませんが、要約する方法がわかりませんでした。申し訳ありません:(

基本的には、参加できるイベントを表示するイベント システムを作成しました。私は2つのテーブルを手に入れました

「イベント」と「登録」 イベント テーブルには、1 つのイベント、イベントの日時、価格などに関するすべての情報が含まれています。

ユーザーがイベントの登録をクリックするたびに、レコードが登録テーブルに追加されます。レコードは次のようになります: Registrationid、eventid、date、status、userid

次に、このクエリを使用して、渡されたすべてのイベントを取得します。

SELECT * FROM events WHERE Date < CURRENT_DATE() ORDER BY Date ASC

ユーザーが実際にイベントに参加した場合にのみ、ユーザーページに以前のイベントを表示したい. 登録テーブルを確認する方法はありますか。そのイベントのレコードが存在するかどうか。イベントを表示しますか?私はこれをphpで行うことができますが、完全にはわかりませんが、MySQLを介して可能であると考えました。

ジョブを処理できるクエリはありますか? :)

4

6 に答える 6

1
SELECT * FROM events e , registrations r where e.eventid = r.eventid AND e.Date < CURRENT_DATE()
于 2013-08-25T19:11:54.440 に答える
1

確かに、これは非常に単純な結合操作です。これを行う方法は次のとおりです。

select e.*
from event e join registration r
on (r.event_id=e.event_id)
where r.user_id=123 and e.date < current_date()
order by e.date asc

その他のヒント:

  1. 予約語やデータ型を列名として使用しないでください (例: "date")
  2. MySQL のデフォルトのストレージ エンジンは、参照整合性をサポートしていません。参照整合性が必要な場合は、InnoDB をのぞいてみてください。

MySQL での結合の詳細については、https ://dev.mysql.com/doc/refman/5.0/en/join.html を確認してください。

于 2013-08-25T19:15:21.777 に答える
0

a を使用するという他のコメンターの提案 (これは適切な提案です) にもかかわらず、この場合は、サブクエリJOINを使用する方が実際には優れていると思います。IN

SELECT *
  FROM events
 WHERE eventid IN
        ( SELECT r.eventid
            FROM registrations r
           WHERE r.userid = ...
        )
   AND date < CURRENT_DATE()
 ORDER
    BY date ASC

...( を適切なユーザー ID に置き換えます)。

于 2013-08-25T19:13:44.500 に答える
0

を使用して、 の行をJOIN選択し、データを取得できます。registrationsuseridevents

SELECT 
    r.*, // Instead of *, you could specify the columns -  r.userid, r.status, etc
    e.* // Instead of *, you could specify the columns - e.event_name, e.Date, etc
FROM 
    registrations r
JOIN 
    events e
ON
    r.eventid = e.id
WHERE
    r.userid = YOUR_USERID
AND
    r.status = ATTENDED
AND
    e.Date < CURRENT_DATE() 
ORDER BY 
    e.Date ASC
于 2013-08-25T19:14:58.567 に答える
0

例 あなたの情報と結合して選択します。

SELECT * FROM events AS e WHERE e.Date < CURRENT_DATE() JOIN registration AS r ON e.id = r.eventid ORDER BY e.Date ASC
于 2013-08-25T19:13:17.917 に答える
0
SELECT e.*
FROM events e
JOIN registrations r
ON e.eventid = r.eventid
WHERE Date < CURRENT_DATE()
AND r.userid = <insert id here>
ORDER BY Date ASC

このクエリは、 eventsテーブルのすべてのフィールドを提供します。ここで、 registrationsテーブルのレコードには特定のユーザー ID があります。

于 2013-08-25T19:12:28.793 に答える