我有一个名为mydatabase的数据库。 在mydatabase中我有几个表:
tablename1
tablename2
event1
event2
tablename3
event3
tablename4
我每周都会有一个新的事件表。如何仅选择最新的事件表? (在这个例子中它是事件3,但在30周内它将是事件30)。
或者我应该如何创建事件表?
答案 0 :(得分:1)
You should read about relational database and how MySQL works但是根据提供的信息,一个相当简单的例子就是3个表格。
以下是一个示例:
CREATE TABLE users
(
id int auto_increment primary key,
name varchar(50),
email varchar(255)
);
CREATE TABLE events
(
id int auto_increment primary key,
name varchar(50),
description TEXT,
happens DATETIME
);
CREATE TABLE event_participants
(
id int auto_increment primary key,
event_id int,
user_id int
);
users
表中注册,并且每个用户都会获得一个唯一的ID
,因此相同的用户无需在网站上反复注册以参加活动。 events
表格中注册,每个活动都会获得唯一的ID
,这样您就可以轻松搜索过去的活动,未来的活动等。event_participants
表格中,这样您就可以确切地知道谁参与了哪个活动,您可以计算用户参与其他活动的次数以及许多其他事项。所以这是一个例子:
INSERT INTO users (name, email)
VALUES
('John', 'john@test.com');
INSERT INTO events (name, description, happens)
VALUES
('Young Project', 'Its a soccer...', NOW());
如上所示,我创建了一个活动,并且还注册了一个用户。
现在我该怎么把2放在一起?我在第三张桌子上也是这样引用的:
INSERT INTO event_participants (event_id, user_id)
VALUES
(1, 1);
现在我如何知道用户参加活动?这是一个简单的示例:
SELECT u.name AS `participantName`, e.name AS `eventName`, e.happens
FROM event_participants ue
JOIN users u
ON u.id = ue.user_id
JOIN events e
ON e.id = ue.event_id
WHERE e.id = 1
And here is a LIVE DEMO of it working.
您可以进一步列出所有事件:
SELECT * FROM events
或特定的:
SELECT * FROM events WHERE id = 1
您可以进一步列出所有用户:
SELECT * FROM users
或特定的:
SELECT * FROM users WHERE id = 1
如何选择上次注册的活动?
SELECT * FROM events ORDER BY id DESC LIMIT 1