Использование left join (прошу помочь)

Статус
В этой теме нельзя размещать новые ответы.

lamo

Постоялец
Регистрация
1 Июл 2008
Сообщения
51
Реакции
4
Есть запрос вида:

SELECT COUNT(a.id) as ecount,a.city,a.name FROM a
LEFT JOIN c ON (c.unid=a.id)
GROUP BY a.city,a.name
ORDER BY ecount DESC


Как добавить условие что бы выводились записи только удовлетворяющие a.city=1, где это я должен вставить условие?

Всем заранее спасибо!
 
SELECT COUNT(a.id) as ecount,a.city,a.name FROM a
LEFT JOIN c ON (c.unid=a.id)
WHERE a.city=1
GROUP BY a.city,a.name
ORDER BY ecount DESC
 
Мона еще так:

SELECT COUNT(a.id) as ecount,a.city,a.name FROM a
LEFT JOIN c ON c.unid=a.id and a.city=1
GROUP BY a.city,a.name
ORDER BY ecount DESC
 
что бы не плодить темы задам свой вопрос здесь.помогите с запросом ни чего не выходит выводится, но все не то.

есть 2 таблици
CREATE TABLE `Images`(
`Image_Id` BIGINT(20) unsigned NOT NULL auto_increment,
`pLeft` INT NOT NULL,
`pTop` INT NOT NULL,
`pWidth` INT unsigned NOT NULL,
`pHeight` INT unsigned NOT NULL,
PRIMARY KEY (`Image_Id`)
) TYPE=MyISAM;
CREATE TABLE `Words`(
`Word_Id` BIGINT(20) unsigned NOT NULL auto_increment,
`User_Id` BIGINT(20) unsigned NOT NULL,
`Image_Id` BIGINT(20) unsigned NOT NULL,
`Found` INT DEFAULT 0,
PRIMARY KEY (`Word_Id`)
) TYPE=MyISAM;

нужно в одном запросе выбрать из Images все записи у которых в Words в поле Found стоит 0 и тех которых в таблице words нет
, но есть в таблице images
делал так
$query = "SELECT distinct im.*, ws.* FROM Images as im,Words as ws WHERE im.Image_Id=ws.Image_Id and ws.Found='0'";
и так
$query = "SELECT im.*,ws.* FROM Images as im,Words as ws LEFT JOIN im ON (im.Image_Id=ws.Image_Id) WHERE and ws.Found='0'";

в первом случае выводит информацию частично только о тех которые есть в таблице word со значением found = 0 а оставшиеся из images не выбирает.

а вовтором случае говорит про неуникальность im не могу понять в чем дело.

и с точки зрения быстроты работы стоит это разбить на два запроса или всетаки делать в одном?
 
Код:
SELECT Im1.Image_Id, Im1.pLeft, Im1.pTop, Im1.pWidth, Im1.pHeight, Wor1.Found FROM Images AS Im1
LEFT JOIN Words AS Wor1
ON Im1.Image_Id = Wor1.Imag_Id
WHERE Wor1.Found = 0 OR Wor1.Found IS NULL
Если ничего не напутал, то работать должно так:
всем полям из таблицы Images ставятся в соответствие поля из таблицы Words, если же такого соответствия нет, то из-за LEFT JOIN поля заполняются NULL значениями.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху