Помогите составить запрос. Есть две таблицы. users и phones.
users - id_usr (integer), fio (varchar)
phones - id_usrf (integer), tel (varchar)
Нужно вывести все записи из таблицы users и все соответствующие записи из таблицы phones с подсчетом количества. Например у пользователя Иванов id_usr = 4 и для него в таблице phones есть три записи с телефонами. Значит в результате запроса напротив фамилии Иванов должно выйти 3. Я сделал такой запрос:
select count(phone.id_usrf) as cntphone from phone
LEFT JOIN users on phone.id_usrf = users.id_usr
group by phone.id_usrf
В результате выполнения выводится только поле cntphone а приклеенная джойном таблица users вообще не отображается, хотя как я думал она должна была отобразиться вся, без жесткого соответствия id_usr=id_usrf, ведь left join подразумевает именно это. Если у кого есть соображения что я не так сделал, напишите плз.
запрос c count и join
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: запрос c count и join
Ты забыл перечислить её поля после слова SELECT.
Re: запрос c count и join
Ели перечислить поля из users после select, выдается ошибка:
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Re: запрос c count и join
Добавил еще после group by все поля которые перечислены в select. Запрос выполнился, но вышли только те поля для которых есть соответствие id_usr = id_usrf, а мне надо чтобы пользователи вышли все. Не могу додуматься как это сделать.
Re: запрос c count и join
karabas писал(а):Ели перечислить поля из users после select, выдается ошибка:
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
Все. Разобрался. Надо было "приклеивать" джойном phones а не users. Спасибо за помощь.