您好,我正在尝试解决以下问题,其中包括我已经拥有的东西。问题在下面。
这就是我所做的。
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 ```
答案 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
如果您很难解决这个问题,只需举一个简单的例子并检验您的想法即可。