Как лучше сделать выборку из двух таблиц

mmaaxx

Guest
Всё отлично работает, Falc очевидно допустил опечатку

SELECT *,COUNT(tovar.id) FROM BREND LEFT JOIN tovar ON tovar.brend_id = brend.id GROUP BY brend.id

или

SELECT *,COUNT(tovar.id) FROM BREND,tovar WHERE tovar.brend_id = brend.id GROUP BY brend.id

PS: Если значения которые будут в COUNT(***) будут NULL, то они учитываться не будут
 

ns

Guest
Автор оригинала: mmaaxx
Всё отлично работает, Falc очевидно допустил опечатку

SELECT *,COUNT(tovar.id) FROM BREND LEFT JOIN tovar ON tovar.brend_id = brend.id GROUP BY brend.id

или

SELECT *,COUNT(tovar.id) FROM BREND,tovar WHERE tovar.brend_id = brend.id GROUP BY brend.id

PS: Если значения которые будут в COUNT(***) будут NULL, то они учитываться не будут
Это работате бесспорно, значит придеться ждать 4.1 с вложенными запросами
 

mmaaxx

Guest
ns
В смысле?, если ты про то case sensitive, то все собственные названия я создаю в lowwer case, тобиш маленькими буквами. А именно:
SELECT *,COUNT(tovar.id) FROM brend LEFT JOIN tovar ON tovar.brend_id = brend.id GROUP BY brend.id
Ну и соответственно названия полей и таблиц тоже должны быть созданы в lowwer case.
У меня всё работает на mysql 4.16, а решать эту задачу с помощью вложених запросов - медленно (imho).
Если это не решает задачу, то более подробно обьясни что именно нужно (можно также привести SHOW CREATE TABLE).
 

Falc

Новичок
ns
Где ты нашел в моем запросе подзапросы?

Мой запрос (если я нигде не опечатался) должен работать и на 3-ей версии мускула.
Но еще раз повтарюсь такое работает по-мойму только в мускуле, в большенстве СУБД надо групировать, по всем вибираемым полям.
 

Alexandre

PHPПенсионер
версия 4.0.16 уже вышла, желающие могут установить
версия 4.2.0 в альфа тестировании
 

Falc

Новичок
Alexandre
>>версия 4.0.16 уже вышла, желающие могут установить
Уже вышла 4.0.17
 

zul

Новичок
А что если есть 2 таблицы:
1)
id | datetime | reason

2)
id | question

id - конечно же общий, но мне надо выбрать по определённому интервалу дат записи из 2ой таблицы?
 

zul

Новичок
Так или иначе к сути вопроса - это не имело отношения )) Т.ч. всё-равно надо их объединять!
 

Falc

Новичок
zul
>>надо их объединять!
Соединять, обединение это совсем другая операция.
 

ns

Guest
Автор оригинала: mmaaxx ,Falc
Немного отошли от вопроса,

Исходные данные:

две таблицы, первая таблица это список производитей и у каждого свой уникальный ID,т.е
brend.brend_id
brend.brend_title

вторая таблица, это таблица товаров, т.е.

tovar.tovar_id
tovar.bread_id
tovar.tovar_desc
и т.д.

задача

вывести всех производителей и сколько товару (кол-во)
у каждого производителя.

Да можно воспользоваться JOIN или более просто ( mmaaxx приводил примеры) , но эти запросы будут НЕ актуальны если
у производителя пока нет товару,

а ведь надо вывести всех производителей!!!!

Пока писал , придул а ведь можно по идее сделать потом UNION с запросом который ищет производителей у которых нет товару

Это идея, надо опробовать....
 

Falc

Новичок
ns
Если тебе надо выводить производителей у которых нет товаров просто меняем JOIN на LEFT JOIN
 

mmaaxx

Guest
ns
Что по твоему это (ну если названия полей поменять)?
http://phpclub.ru/talk/showthread.php?postid=287458#post287458
Повторюсь:
select *, count(tovar.tovar_id) from brend left join tovar on brend.brend_id=tovar.brend_id group by brend.brend_id
 

Demiurg

Guest
SELECT brend.*, COUNT(tovar.id)
FROM BREND, tovar
where tovar.brend_id = brend.id
GROUP BY brend.id
хотя это тоже самое, что написал Falc, и я не понимаю, почему это работает только в mysql.
 

ns

Guest
Автор оригинала: mmaaxx
ns
Повторюсь:
select *, count(tovar.tovar_id) from brend left join tovar on brend.brend_id=tovar.brend_id group by brend.brend_id
Делал я такой запрос и уже писал об этом,

все поля из производителя выводяться нормально, а вот все что касаеться таблицы товара, везде либо NULL либо 0
(в том числе count(tovar.tovar_id)) !!!

В чем может быть проблемма???
 
Сверху