我正在尝试解决此数据库问题

时间:2020-06-28 21:08:16

标签: mysql

您好,我正在尝试解决以下问题,其中包括我已经拥有的东西。问题在下面。

这就是我所做的。


CREATE TABLE casino (
  casino_id int, -- a primary key
);

CREATE TABLE games (
  id int,
  PRIMARY KEY (id),
  FOREIGN KEY (casino_id) REFERENCES casinos (id) ON DELETE CASCADE
);

CREATE TABLE countries (
  id int,
  PRIMARY KEY (id),
  FOREIGN KEY (games_id) REFERENCES games (id) ON DELETE CASCADE
);

Question 2:

SELECT  *
FROM    players   
        LEFT JOIN games 
            ON players.id = games.id AND
                games.type LIKE ‘%SLOT%'
ORDER   BY players.id


SELECT *
FROM players LEFT OUTER JOIN players ON players.id = games.id 
WHERE games.type LIKE '%SLOT%'
ORDER BY players.id ```

1 个答案:

答案 0 :(得分:1)

这是一种制作方法

这里的类型只是char,通常类型应该是一个表,这样一个游戏可以有很多类型,但这会使查询更大

CREATE TABLE countries (
  id int,
  Country_name CHAR(20),
  PRIMARY KEY (id)
);
CREATE TABLE players (
  id int,
  ref_country_id INT,
  type CHAR(50),
  PRIMARY KEY (id),
  FOREIGN KEY (ref_country_id) REFERENCES countries (id) 
);

CREATE TABLE games (
  id int,
  name char(50),
  type CHAR(50),
  PRIMARY KEY (id)
);

CREATE TABLE rel_country_games (
  ref_country_id int,
  ref_games_id INT,
  FOREIGN KEY (ref_country_id) REFERENCES countries (id),
  FOREIGN KEY (ref_games_id) REFERENCES games (id)
);


CREATE TABLE casino (
  casino_id int,
  casino_name char(100),
  PRIMARY KEY (casino_id)
);

CREATE TABLE rel_country_games (
  ref_casino_id int,
  ref_games_id INT,
  FOREIGN KEY (ref_casino_id) REFERENCES casino (casino_id),
  FOREIGN KEY (ref_games_id) REFERENCES games (id)
);
INSERT INTO countries VALUES(1,'Brasil'),(2,'Uruguay'),(3,'MExico')
INSERT INTO players VALUES(1,1,NULL),(2,1,'SLOT'),(3,2,'SLOT'),(4,3,'POKER')
INSERT INTO games VALUES(1,'slotgame1','SLOT'),(2,'slotgame2','SLOT'),(3,'poker','POKER');
INSERT INTO rel_country_games VALUES(1,1),(1,2),(2,2),(2,3),(3,1),(3,3)
    SELECT DISTINCT p.id,c.Country_name,p.type,g.type
    FROM players p INNER JOIN countries  c ON c.id = p.ref_country_id 
    INNER JOIN rel_country_games rcg ON c.id = rcg.ref_country_id
    INNER JOIN games g ON rcg.ref_games_id = g.id AND g.type = p.type
    WHERE p.type = 'SLOT'
    ORDER BY p.id 
id | Country_name | type | type
-: | :----------- | :--- | :---
 2 | Brasil       | SLOT | SLOT
 3 | Uruguay      | SLOT | SLOT

db <>提琴here

如果您很难解决这个问题,只需举一个简单的例子并检验您的想法即可。