トレーニング演習として、League of Legends に似た架空の SQLite データベースに取り組んでいます。左外部結合を実行して、すべてのプレーヤーのテーブルを取得し、呼び出されていないスキンがある場合は'Classic'
それらも返す必要があります。
現在、次のクエリがあります。
SELECT * FROM players
LEFT OUTER JOIN (SELECT * FROM playerchampions WHERE NOT championskin = 'Classic')
ON name = playername
これは、私が探しているものを返しますが、不要な列もたくさん返します (プレーヤーの経験、プレーヤーの IP、プレーヤーの RP、テーブル内のプレーヤーplayerchampions
名)。2 つのテーブルのコードは次のとおりです。
CREATE TABLE players (
name TEXT PRIMARY KEY,
experience INTEGER,
currencyip INTEGER,
currencyrp INTEGER
);
CREATE TABLE playerchampions (
playername TEXT REFERENCES players ( name ) ON UPDATE CASCADE,
championname TEXT REFERENCES champions ( name ) ON UPDATE CASCADE,
championskin TEXT REFERENCES skins ( skinname ) ON UPDATE CASCADE,
PRIMARY KEY ( playername, championname, championskin )
);
前述のとおり、クエリは実行されますが、返されたときに playerchampions 列に適切なテーブル名が指定されていないため、SELECT の player.name、playerchampions.championname、playerchampions.championskin を使用できません。
これを修正するにはどうすればよいですか?