如何选择包含某个单词的表DESC

时间:2014-09-07 09:39:47

标签: mysql

我有一个名为mydatabase的数据库。 在mydatabase中我有几个表:

tablename1
tablename2
event1
event2
tablename3
event3
tablename4

我每周都会有一个新的事件表。如何仅选择最新的事件表? (在这个例子中它是事件3,但在30周内它将是事件30)。

或者我应该如何创建事件表?

1 个答案:

答案 0 :(得分:1)

You should read about relational database and how MySQL works但是根据提供的信息,一个相当简单的例子就是3个表格。

  1. 将是您的注册用户
  2. 将是您的活动注册
  3. 将成为活动参与者
  4. 以下是一个示例:

    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