我對MYSQl相當陌生。我正在嘗試創建一個適合我需求的查詢。我開發了一個sqlfiddle.如果user_id以met_user的形式存在,則mysql返回true
這是故事。我有5張桌子。用戶,地點,會議,參加和會見。
最後,我希望能夠選擇地點來查看會議在那裏舉行。我想查看每次會議的與會者。我相信我可以輕鬆完成所有這一切。但...
這裏是我掛了。我想列出所有參加會議的用戶(實際上,這應該排除我自己的ID)。因此,一列應該是user_names,列出參加會議的所有用戶(不包括我),另一列列出我遇到的人顯示爲True或False或類似內容。因此,所有來自特定meeting_id的用戶都將參加會議,並且對於來自表格的所有用戶都具有我的user_id和他們的user_id作爲met_user。
我可以實現許多不同的mysql元素。我正在爲這個掙扎。
這裏是我的架構
CREATE TABLE users (user_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(30) NOT NULL);
CREATE TABLE places (place_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
place_name VARCHAR(30) NOT NULL);
CREATE TABLE meetings (meeting_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
place_id INT(6),
meeting_name VARCHAR(30) NOT NULL);
CREATE TABLE attend (attend_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
meeting_id INT(6),
user_id INT(6));
CREATE TABLE met (met_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
meeting_id INT(6),
user_id INT(6),
met_user INT(6));
INSERT INTO users (user_name)
VALUES ('Jason'), ('Billy'), ('Sarah'), ('Julie'), ('Jennifer'), ('Laura') ;
INSERT INTO places (place_name)
VALUES ('London'), ('Paris'), ('New York'), ('Rome');
INSERT INTO meetings (place_id, meeting_name)
VALUES ('1', 'London Meeting #1'), ('1','London Meeting #2'), ('2','Paris Meeting'), ('3','New York Meeting'), ('4','Rome Meeting');
INSERT INTO attend (meeting_id, user_id)
VALUES ('1', '1'), ('2','1'), ('1','2'), ('1','3'), ('1','4'), ('1','5'), ('1','6');
INSERT INTO met (meeting_id, user_id, met_user)
VALUES ('1', '1', '2'), ('1', '1', '3'),('1', '1', '4'), ('1', '2', '1'), ('1', '2', '3'), ('1', '2', '4');
這裏是我想可能是最接近的一個查詢。
Select u.*, at.meeting_id, at.user_id, m.meeting_name, met.*
from users as u
JOIN attend as at
ON at.user_id = u.user_id
JOIN meetings as m
ON at.meeting_id = m.meeting_id
LEFT JOIN met as met
ON met.user_id = at.user_id
Where m.meeting_id = 1
此查詢我所有的(我是傑森在這個例子中)met_users,所有的比利的met_users,併爲null所有其他與會者(這是我想要的部分)顯示。
**[Results][2]**:
| user_id | user_name | meeting_id | user_id | meeting_name | met_id | meeting_id | user_id | met_user |
|---------|-----------|------------|---------|-------------------|--------|------------|---------|----------|
| 1 | Jason | 1 | 1 | London Meeting #1 | 1 | 1 | 1 | 2 |
| 1 | Jason | 1 | 1 | London Meeting #1 | 2 | 1 | 1 | 3 |
| 1 | Jason | 1 | 1 | London Meeting #1 | 3 | 1 | 1 | 4 |
| 2 | Billy | 1 | 2 | London Meeting #1 | 4 | 1 | 2 | 1 |
| 2 | Billy | 1 | 2 | London Meeting #1 | 5 | 1 | 2 | 3 |
| 2 | Billy | 1 | 2 | London Meeting #1 | 6 | 1 | 2 | 4 |
| 3 | Sarah | 1 | 3 | London Meeting #1 | (null) | (null) | (null) | (null) |
| 4 | Julie | 1 | 4 | London Meeting #1 | (null) | (null) | (null) | (null) |
| 5 | Jennifer | 1 | 5 | London Meeting #1 | (null) | (null) | (null) | (null) |
| 6 | Laura | 1 | 6 | London Meeting #1 | (null) | (null) | (null) | (null) |
感謝您編輯@ollie Jones。你是怎麼做到的?原諒我的無知。 – foxtangocharlie
OFF:您需要足夠的聲望才能做到這一點。 – vaso123
Stack Overflow使用Markdown。當你在一個問題中放置代碼時,如果你用四個空格縮進它的行,你會得到代碼塊。您可以編輯自己的問題而不用聲望。 –