timofy,
Select group_concat(distinct a.id )AS table1_id, ifnull(group_concat(distinct b.id), '-') AS table2_id, group_concat( distinct c.id) AS table3_id
from table1 a
left join table2 b on a.name = b.name
left join table3 c on c.name = b.name or a.name=c.name
where a.name='tom' or b.name ='tom' or c.name='tom'
Разные id и также случай , когда в одной таблице нет toma тык-дык
timofy, кажется я поняла, что ты имел ввиду :
select group_concat(distinct a.id) AS table1_id, group_concat(distinct b.id) AS table2_id, group_concat( distinct c.id) AS table3_id
from table1 a, table2 b, table3 c
where a.name='tom' and b.name ='tom' and c.name='tom'
Rsa97, А если я хочу найти сумму столбца по всем строкам, по какой колонке делать GROUP BY? --->
SELECT SUM (`score`) FROM `tab` --> без `name`,
а с `name` только так:
SELECT `name`, SUM(`score`) FROM `tab` GROUP BY `name`
автор из вопроса, хочет получить сумму всех оценок каждого пользователя по отдельности, о чем свидетельствует наличие поля `name`. При этом не вводя GROUP BY у него имя перестает соответствовать оценке, из чего он и написал этот вопрос.
Vitsliputsli, он корректный, НО если вы не заметили, то Автор написал во втором пункте своего вопроса о непонятном поведении поля name,что говорит о том, что ему нужно использовать group by, после чего он получит что он хочет.
если уж на то пошло, то в первом случае, тогда уж НЕ надо использовать агрегирующую функцию MIN(), а написать запрос:
Select DISTINCT(name) FROM tab order by score asc LIMIT 1
Андрей, более того после отработки этого запроса , следом будут возникать как раз такие вопросы, как у автора под пунктом №2 -Поле `name` на первом примере вообще своей жизнью живет. Возвращает первую попавшуюся запись в колонке.
Андрей, никто не написал, что он не будет работать, он работает неверно. а врубив в веркбенче например написание правильного синтаксиса , то он просто не выполнится
Select group_concat(distinct a.id )AS table1_id, ifnull(group_concat(distinct b.id), '-') AS table2_id, group_concat( distinct c.id) AS table3_id
from table1 a
left join table2 b on a.name = b.name
left join table3 c on c.name = b.name or a.name=c.name
where a.name='tom' or b.name ='tom' or c.name='tom'
Разные id и также случай , когда в одной таблице нет toma тык-дык