|
|
|
| Как отобрать из 2ух соединенных Лефт Джоином таблиц?
Есть 2 талицы, соединенные лефт джоином по полю novost_id. В результате, поле novost_id может принимать иногда одинаковые значения. Надо сделать отбор так, чтоб значения в получившемся поле id не повторялись.
Смотрел оператор distinct, не могу правильно применить ( / Возможно ли это вообще?
1)
NOVOSTI:
novost_id (Идентификатор, автоинкримент)
name (имя новости)
mini_opisanie
date (дата новости)
2)
FOTO:
id (автоинкримент)
novost_id
adres_foto | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 20:12)
| | вы порядок таблиц не перепутали?
id в Вашем случае повторяться не должен.
Кроме случая id is null | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2009 в 20:28)
| | 1) Таблица новостей
2) Таблица фоток к новостям.
Для новостей, но не всех, есть фотки, одна или несколько. Если есть хоть одна фотка, то она показывается, если фотки нету - выводится значение null.
Но поскольку фоток может быть много, ИД будет повторяться столько раз, сколько там имеется фоток. Надо чтобы не повторялось... | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 20:43)
| | приведите пример строк в таблицах, для которых поле id в запросе будет повторяться.
Замечу, что поля ИД в исходной постановке нет вообще. | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2009 в 21:11)
| | SELECT * FROM novosti LEFT JOIN foto ON novosti.novost_id = foto.novost_id
имеется ввиду полученное общее поле "новость_ид" повторяется, хотелось бы чтобы не повторялось. | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 21:17)
| | Оно повторяется если фоток больше 1 | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 21:17)
| | Пля.
когда имеется в виду полученное общее поле "новость_ид" то нужно писать поле "новость_ид" , а не то, что первым в голову взбредет.
Адью. | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 20:12)
| | Как отобрать из 2ух соединенных Лефт Джоином таблиц?
Есть 2 талицы, соединенные лефт джоином по полю novost_id. В результате, поле novost_id может принимать иногда одинаковые значения. Надо сделать отбор так, чтоб значения в получившемся поле novost_id не повторялись.
Смотрел оператор distinct, не могу правильно применить ( / Возможно ли это вообще?
1)
NOVOSTI:
novost_id (Идентификатор, автоинкримент)
name (имя новости)
mini_opisanie
date (дата новости)
2)
FOTO:
id (автоинкримент)
novost_id
adres_foto | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 21:58)
| | Запрос-то исходный напишете? | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2009 в 22:07)
| | SELECT * FROM novosti LEFT JOIN foto ON novosti.novost_id = foto.novost_id
Это весь пока что исходный запрос, остальные выдают ошибку или не работают. | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 22:14)
| | в него надо както и включить сортировку.. | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 22:14)
| | Допустим у Вас 6 фото на две новости.
1 - 1 2 3
2 - 4 5 6
Какой результат Вы хотите получить? | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2009 в 22:23)
| | Желаемый результат:
1 новость - одно фото
2 новость - одно фото
(Если нету к новости фото, то выводит нулл заместо фотки к этой новости)
Получается сейчас:
1 новость - первая фотка
1 новость - вторая фотка
1 новость - третяя фотка
2 новость четвертая фотка
2 ность пятая фотка
2 новость шестая фотка
(Если нету к новости фото, то выводит нулл заместо фотки к этой новости) | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 22:30)
| | какое одно, если их три? Первое? Последнее? | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2009 в 22:39)
| | Это не важно. К примеру первое. | |
|
|
|
|
|
|
|
для: nowpol
(23.02.2009 в 22:44)
| |
SELECT n.* , f.*
FROM `NOVOSTI`
LEFT JOIN
(SELECT MIN(id) as fid, novost_id AS nid
FROM `FOTO`
GROUP BY novost_id
) AS t1
ON n.novost_id = nid
LEFT JOIN `FOTO` f ON fid = f.id
|
| |
|
|
|
|
|
|
|
для: Trianon
(23.02.2009 в 22:53)
| | Спасибо, работает ) Щас буду разбиратсья че к чему :) | |
|
|
|