我的SQL不符合這一點,但我很確定對於SQL專家來說很容易 - 我寧願找出正確的查詢,而不是將邏輯放入PHP腳本中...MySQL以條件加入表格
因此:我有2張桌子,其中一張包含有關俱樂部的信息,特定的比賽以及俱樂部爲該比賽輸入了多少支球隊。第二個表拆分條目進入 「告」
即
mysql> describe Entries;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| ClubId | int(11) | NO | PRI | NULL | |
| MatchId | int(11) | NO | PRI | NULL | |
| NumTeams | int(11) | NO | | NULL | |
+----------+---------+------+-----+---------+-------+
mysql> describe Divisions;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| MatchId | int(11) | NO | MUL | NULL | |
| ClubId | int(11) | NO | MUL | NULL | |
| Team | int(11) | NO | | NULL | |
| Division | int(11) | NO | | NULL | |
+----------+---------+------+-----+---------+-------+
的樣本數據:
Entries:
1, 1, 1 (Club1, Match1, 1 team)
1, 3, 2 (Club1, Match3, 2 teams)
Divisions:
1, 1, 1, 1 (Club1, Match1, Team1 is in division 1)
1, 1, 2, 2 (Club1, Match1, Team2 is in division 2)
1, 2, 1, 1 (Club1, Match2, Team1 is in division 1)
1, 2, 2, 2 (Club1, Match2, Team2 is in division 2)
1, 3, 1, 1 (Club1, Match3, Team1 is in division 1)
1, 3, 2, 2 (Club1, Match3, Team2 is in division 2)
要求的結果:
1, 1, 1 (Club 1, Match1, Team1)
1, 3, 1 (Club1, Match3, Team1)
1, 3, 2 (Club1, Match3, Team2)
- so not all the rows in Divisions are in the result.
e.g, club1, match1, team2 isn't here because there
is only one entry in match 1.
現在Entries.NumTeams可以上去和隨着俱樂部進入或移除球隊而下降。當一個新隊伍進入時,它會被放入第一部分(只是它總是在一個部門)。當隊伍被移除時,他們在分區表中的輸入不會被移除(分區是手動設置的,所以如果有人已經決定了俱樂部X的第二隊屬於第2分區,即使俱樂部X尚未進入第2分區,您也希望保留該信息球隊)。
因此,打印所有的球隊在一個部門,我需要這樣的:
SELECT * FROM Divisions WHERE Divisions.Team <= Entries.NumTeams
(for the Entries row with the matching match and club)
我嘗試這樣做:
SELECT Divisions.* from Entries LEFT JOIN Divisions ON
Divisions.MatchId = Entries.MatchId AND Divisions.ClubId = Entries.ClubId
WHERE Divisions.Team <= Entries.NumTeams
但我結束了重複的行。我可能通過使用SELECT DISTINCT來擺脫它們,但這使我認爲我的查詢被打破以開始。我也交換了左右哪個表,但仍然有重複。
明天將嘗試提供的答案。謝謝!
我不明白你在做什麼:'Divisions.Team <= Entries.NumTeams'。 「Divisions.Team」是一個部門的團隊數量嗎?另外,你能否提供更多關於什麼是「匹配」的信息?這聽起來不像是兩隊之間比賽的常見概念。 – Sebas
Divisions.Team列的數據類型是什麼? – EkoostikMartin
你能提供你的表結構的一些數據,所以我們可以測試 –