Я довольно новичок в MYSQl. Я пытаюсь создать запрос, который будет соответствовать моим потребностям. Я разработал sqlfiddle.mysql return true, если user_id существует как met_user
Вот история. У меня 5 таблиц. Пользователи, Места, Встречи, Посещение и Встреча.
В конце концов, я хотел бы иметь возможность выбирать места для просмотра встреч, которые проводятся там. Я хотел бы посмотреть участников на каждую встречу. Я считаю, что могу легко все это сделать. но ...
Здесь я повесил трубку. Я хочу показать список ВСЕХ пользователей, которые посещают собрание (на самом деле это должно исключать мой собственный идентификатор). Таким образом, один столбец должен быть user_names, в котором перечислены все пользователи, участвующие в собрании (исключая меня), а другой - список, с которым я встречался, как True или False или что-то подобное. Таким образом, все пользователи посещают определенные meet_id и True для всех тех, кто из таблицы встречаются, у которых есть user_id и их user_ids как 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 БИЛЛИ, и нуль для всех остальных участников (что является частью того, что я хочу).
**[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
Переполнение стека использует Markdown. Когда вы ставите код в вопрос, если вы отступаете его строки на четыре пробела, вы получаете блоки кода. Вы можете редактировать свой вопрос без репутации. –