Как я могу запросить данные из нескольких таблиц в одном запросе, включая «похожие» данные, основанные на имени пользователя - PullRequest
0 голосов
/ 10 августа 2011

У меня есть три таблицы для потоковой передачи данных из базы данных

stream_master
    stream_id
    user_id -> foreign Key
    stream_title
    stream_content

user
    user_id
    user_name
    password


stream_likes
    stream_like_id
    stream_id
    user_id

Я могу объединиться, чтобы получить поток данных, но я хочу получать данные «stream_likes» для каждой строки «stream_master», основываясь на активности пользователя (вошедшего в систему). Имеется в виду, если пользователю уже нравится поток, получить 1 для каждой строки

Возможно ли выполнить в одном запросе?

мой вывод должен быть:

[stream_id => 10,
user_id => 10015,
stream_title=>"title of stream",
stream_content="stream content",
stream_like=>1],
[stream_id => 10,
user_id => 10018,
stream_title=>"title of stream222",
stream_content="stream content22",
stream_like=>0]

Я не могу найти хорошее решение для этого. Может ли кто-нибудь помочь мне в этом?

Спасибо

Питер

1 Ответ

0 голосов
/ 10 августа 2011
SELECT m.*, IF(l.stream_like_id IS NOT NULL, 1, 0) AS stream_like
FROM stream_master m
LEFT JOIN stream_likes l
ON m.stream_id = l.stream_id AND m.user_id = l.user_id

Будет ли это работать для вас?

...