|
|
|
| Мой запрос выдает 2 одинаковые записи, если установлена связь текущей таблицу с другой по полю image. Т-е если во второй таблице 2 записи - то запрос выдает 2 одинковые записи, отличающиеся только полем image
Как тянуть без повторений?
SELECT `cars`.`id_cars` , `cars`.`price` , `cars`.`name` , `cars`.`year` , `cars_images`.`image`
FROM (
`cars`
)
LEFT JOIN `regions` ON `regions`.`id_region` = `cars`.`region`
LEFT JOIN `cars_colors` ON `cars_colors`.`id_color` = `cars`.`color`
LEFT JOIN `cars_condition` ON `cars_condition`.`id_cond` = `cars`.`condition`
LEFT JOIN `transport_caterories` ON `transport_caterories`.`id_transport` = `cars`.`category`
LEFT JOIN `cars_cat` ON `cars_cat`.`id_cat` = `cars`.`cat`
JOIN `cars_images` ON `cars_images`.`id_cars` = `cars`.`id_cars`
WHERE `cars`.`status` = '1'
ORDER BY `cars`.`id_cars` DESC
LIMIT 20
|
| |
|
|
|
|
|
|
|
для: OLi
(18.08.2012 в 18:09)
| | Т-е на выходе щас так:
: id_cars price name year image
1 56000 Toyota Land Cruiser 1991 image.jpg
1 56000 Toyota Land Cruiser 1991 image1.jpg
|
| |
|
|
|
|
|
|
|
для: OLi
(18.08.2012 в 18:09)
| | Либо DISTINCT, но тогда выбирать без поля image:
SELECT DISTINCT `cars`.`id_cars` , `cars`.`price` , `cars`.`name` , `cars`.`year` FROM ...........
|
Либо GROUP BY, но из image тогда нужно выбрать какое-то одно значение:
SELECT `cars`.`id_cars` , `cars`.`price` , `cars`.`name` , `cars`.`year` , max(`cars_images`.`image`)img
FROM ( `cars` )
LEFT JOIN `regions` ON `regions`.`id_region` = `cars`.`region`
LEFT JOIN `cars_colors` ON `cars_colors`.`id_color` = `cars`.`color`
LEFT JOIN `cars_condition` ON `cars_condition`.`id_cond` = `cars`.`condition`
LEFT JOIN `transport_caterories` ON `transport_caterories`.`id_transport` = `cars`.`category`
LEFT JOIN `cars_cat` ON `cars_cat`.`id_cat` = `cars`.`cat`
JOIN `cars_images` ON `cars_images`.`id_cars` = `cars`.`id_cars`
WHERE `cars`.`status` = '1'
GROUP BY `cars`.`id_cars` , `cars`.`price` , `cars`.`name` , `cars`.`year`
ORDER BY `cars`.`id_cars` DESC
LIMIT 20
|
| |
|
|
|
|
|
|
|
для: Sfinks
(18.08.2012 в 20:27)
| | А вообще почему такой странный запрос???
Зачем у вас присоединяются таблицы regions, cars_colors, cars_condition, transport_caterories и cars_cat, если в запросе они не принимают никакого участия??? | |
|
|
|
|
|
|
|
для: Sfinks
(18.08.2012 в 20:31)
| | Как же не принимают? там же связь полей одной таблицы с полями другой | |
|
|
|
|
|
|
|
для: OLi
(18.08.2012 в 20:33)
| | И что это дает?
В условиях выборки они участия не принимают.
Запрос:
SELECT C.`id_cars`, C.`price`, C.`name`, C.`year`, max(I.`image`)img
FROM `cars` C
JOIN `cars_images` I ON I.`id_cars` = C.`id_cars` AND C.`status` = '1'
GROUP BY C.`id_cars`, C.`price`, C.`name`, C.`year`
ORDER BY C.`id_cars` DESC
LIMIT 20
| даст тот же самый результат. Можете проверить. | |
|
|
|
|
|
|
|
для: Sfinks
(18.08.2012 в 20:27)
| | Почему убрали image в
SELECT DISTINCT `cars`.`id_cars` , `cars`.`price` , `cars`.`name` , `cars`.`year` FROM
|
| |
|
|
|
|
|
|
|
для: OLi
(18.08.2012 в 20:32)
| | DISTINCT не сработал | |
|
|
|
|
|
|
|
для: OLi
(18.08.2012 в 20:32)
| | потому что DISTINCT - значит выбирать только уникальные строки. Если image оставить, то каждая из двух строк будет уникальна. Следовательно ничего не изменится и в выборке так и останется 2 строки. | |
|
|
|
|
|
|
|
для: Sfinks
(18.08.2012 в 20:35)
| | Хорошо, давайте этот весь хлам упростим, до уровня JOIN cars_images, так чтобы я на выходе получил все поля первой таблицы cars и поля соответствия cars.image=cars_images.id_car и без повторений из cars, в случае, если записей в cars_images больше 1 | |
|
|
|
|
|
|
|
для: OLi
(18.08.2012 в 20:38)
| | см.выше | |
|
|
|
|
|
|
|
для: Sfinks
(18.08.2012 в 20:42)
| | Не сработало так как вы написали
Либо GROUP BY, но из image тогда нужно выбрать какое-то одно значение: - МНЕ ВСЕ ЗНАЧЕНИЯ НАДО ВЫБРАТЬ | |
|
|
|
|
|
|
|
для: OLi
(18.08.2012 в 20:56)
| | > Не сработало так как вы написали
В чем заключается "не сработало"?
> МНЕ ВСЕ ЗНАЧЕНИЯ НАДО ВЫБРАТЬ
Это в принципе не возможно, чтобы первые четыре столбца не повторялись, а в пятом были все значения разные!
Если вы себе представляете, как должна выглядеть результирующая таблица, нарисуйте ее. Тогда попробую написать запрос. | |
|
|
|