Я пытаюсь построить select для этой таблицы, но получаю странные результаты. Мои столы:mysql не может найти правильный запрос выбора
tbl_main
–––––––––––––––––-
id user_id name
tbl_friends
–––––––––––––––––-
id user_id main_id people
tbl_cats
–––––––––––––––––-
id user_id main_id
Теперь я знаю user_id только. Я хотел бы получить результаты (массив) с этими предметами:
- мне нужна список ид из tbl_main (результаты должны быть отсортированы по этому tbl_main.id DESC)
- подсчета, сколько уникальных людей в tbl_friends когда tbl_friends.user_id = user_id И tbl_friends.main_id = tbl_main.id
- получить запятую список (или массив) значений людей из tbl_friends когда tbl_friends.user_id = user_id И tbl_friends.main_id = tbl_main.id
- количества уникальных значений tbl_cats.user_id, когда tbl_cats.main_id = tbl_main.id
Это должно быть результатом одного запроса. Я пытаюсь использовать многие комбинации COUNT (DISTINCT), но он не работает, и я полностью потерян. пожалуйста помоги. большое спасибо
Я пробовал что-то вроде этого (см. ниже). Результаты выглядят нормально, но правильно ли это сделать (3 выбирает в одном запросе)? А как насчет загрузки сервера? Будет ли работать нормально с большими данными?
SELECT e.id
(SELECT GROUP_CONCAT(DISTINCT ef.people) FROM tbl_friends ef WHERE ef.user_id=$user_id AND ef.main_id=e.id) as result_people,
(SELECT COUNT(DISTINCT et.user_id) FROM tbl_cats et WHERE et.main_id=e.id) as total
FROM tbl_main e
WHERE e.user_id = $user_id
ORDER BY e.id DESC
Я пробовал что-то вроде: SELECT e.id, ef.people, COUNT (DISTINCT ef.people) AS countpeople, COUNT (DISTINCT ef.people) + COUNT (DISTINCT e.user_id) AS total, COUNT (DISTINCT et. идентификатор_пользователя) КАК total_times ОТ tbl_main е РЕГИСТРИРУЙТЕСЬ tbl_friends эф ВКЛ (ef.main_id = e.id) РЕГИСТРИРУЙТЕСЬ tbl_cats ГЭ по (et.main_id = e.id) WHERE e.user_id = $ user_id ORDER BY e.id DESC, но это не хорошо, как я вижу. – peter
@peter, не добавляйте дополнительный контент к своему собственному вопросу в комментариях. Измените исходный вопрос и добавьте информацию там, где его легко найти, и вы можете его правильно отформатировать. –