1
CREATE TABLE users (
users_id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(40) NOT NULL,
email VARCHAR(60) NOT NULL,
password CHAR(40) NOT NULL,
PRIMARY KEY (users_id)
);
CREATE TABLE games (
games_id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
locations_id MEDIUMINT UNSIGNED NOT NULL
PRIMARY KEY (games_id)
);
CREATE TABLE games_users (
users_id MEDIUMINT UNSIGNED NOT NULL,
games_id MEDIUMINT UNSIGNED NOT NULL,
score MEDIUMINT UNSIGNED NOT NULL,
created DATETIME NOT NULL,
last_updated DATETIME NOT NULL,
PRIMARY KEY (games_id, users_id)
);
は、各ゲームは2人のユーザ間で取得し、games_usersは、各ゲームの2行、各プレイヤーのための1つを持っているので、勝者は最高のスコアを持っています(はい、そうです!)。最小値と最大値の列のためのプラスのすべての行データ上記の表では
ゲームごとに1つの行が必要な場合は、勝ち負けのスコアを得ることができます(下記のクエリを使用してください)が、勝者と敗者のIDも知る必要があります。
SELECT
*,
min(score) as loser,
max(score) as winner
FROM games
LEFT JOIN
games_members
ON
games_members.games_id = games.games_id
GROUP BY
games_members.games_id