Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как отобрать из 2ух соединенных Лефт Джоином таблиц?
 
 автор: nowpol   (23.02.2009 в 20:12)   письмо автору
 
 

Как отобрать из 2ух соединенных Лефт Джоином таблиц?

Есть 2 талицы, соединенные лефт джоином по полю novost_id. В результате, поле novost_id может принимать иногда одинаковые значения. Надо сделать отбор так, чтоб значения в получившемся поле id не повторялись.
Смотрел оператор distinct, не могу правильно применить ( / Возможно ли это вообще?

1)
NOVOSTI:
novost_id (Идентификатор, автоинкримент)
name (имя новости)
mini_opisanie
date (дата новости)

2)
FOTO:
id (автоинкримент)
novost_id
adres_foto

  Ответить  
 
 автор: Trianon   (23.02.2009 в 20:28)   письмо автору
 
   для: nowpol   (23.02.2009 в 20:12)
 

вы порядок таблиц не перепутали?

id в Вашем случае повторяться не должен.
Кроме случая id is null

  Ответить  
 
 автор: nowpol   (23.02.2009 в 20:43)   письмо автору
 
   для: Trianon   (23.02.2009 в 20:28)
 

1) Таблица новостей
2) Таблица фоток к новостям.

Для новостей, но не всех, есть фотки, одна или несколько. Если есть хоть одна фотка, то она показывается, если фотки нету - выводится значение null.
Но поскольку фоток может быть много, ИД будет повторяться столько раз, сколько там имеется фоток. Надо чтобы не повторялось...

  Ответить  
 
 автор: Trianon   (23.02.2009 в 21:11)   письмо автору
 
   для: nowpol   (23.02.2009 в 20:43)
 

приведите пример строк в таблицах, для которых поле id в запросе будет повторяться.
Замечу, что поля ИД в исходной постановке нет вообще.

  Ответить  
 
 автор: nowpol   (23.02.2009 в 21:17)   письмо автору
 
   для: Trianon   (23.02.2009 в 21:11)
 

SELECT * FROM novosti LEFT JOIN foto ON novosti.novost_id = foto.novost_id

имеется ввиду полученное общее поле "новость_ид" повторяется, хотелось бы чтобы не повторялось.

  Ответить  
 
 автор: nowpol   (23.02.2009 в 21:18)   письмо автору
 
   для: nowpol   (23.02.2009 в 21:17)
 

Оно повторяется если фоток больше 1

  Ответить  
 
 автор: Trianon   (23.02.2009 в 21:24)   письмо автору
 
   для: nowpol   (23.02.2009 в 21:17)
 

Пля.
когда имеется в виду полученное общее поле "новость_ид" то нужно писать поле "новость_ид" , а не то, что первым в голову взбредет.
Адью.

  Ответить  
 
 автор: nowpol   (23.02.2009 в 21:58)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Trianon   (23.02.2009 в 22:07)   письмо автору
 
   для: nowpol   (23.02.2009 в 21:58)
 

Запрос-то исходный напишете?

  Ответить  
 
 автор: nowpol   (23.02.2009 в 22:14)   письмо автору
 
   для: Trianon   (23.02.2009 в 22:07)
 

SELECT * FROM novosti LEFT JOIN foto ON novosti.novost_id = foto.novost_id

Это весь пока что исходный запрос, остальные выдают ошибку или не работают.

  Ответить  
 
 автор: nowpol   (23.02.2009 в 22:15)   письмо автору
 
   для: nowpol   (23.02.2009 в 22:14)
 

в него надо както и включить сортировку..

  Ответить  
 
 автор: Trianon   (23.02.2009 в 22:23)   письмо автору
 
   для: nowpol   (23.02.2009 в 22:14)
 

Допустим у Вас 6 фото на две новости.
1 - 1 2 3
2 - 4 5 6

Какой результат Вы хотите получить?

  Ответить  
 
 автор: nowpol   (23.02.2009 в 22:30)   письмо автору
 
   для: Trianon   (23.02.2009 в 22:23)
 

Желаемый результат:
1 новость - одно фото
2 новость - одно фото
(Если нету к новости фото, то выводит нулл заместо фотки к этой новости)


Получается сейчас:
1 новость - первая фотка
1 новость - вторая фотка
1 новость - третяя фотка

2 новость четвертая фотка
2 ность пятая фотка
2 новость шестая фотка
(Если нету к новости фото, то выводит нулл заместо фотки к этой новости)

  Ответить  
 
 автор: Trianon   (23.02.2009 в 22:39)   письмо автору
 
   для: nowpol   (23.02.2009 в 22:30)
 

какое одно, если их три? Первое? Последнее?

  Ответить  
 
 автор: nowpol   (23.02.2009 в 22:44)   письмо автору
 
   для: Trianon   (23.02.2009 в 22:39)
 

Это не важно. К примеру первое.

  Ответить  
 
 автор: Trianon   (23.02.2009 в 22:53)   письмо автору
 
   для: 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 

  Ответить  
 
 автор: nowpol   (23.02.2009 в 23:08)   письмо автору
 
   для: Trianon   (23.02.2009 в 22:53)
 

Спасибо, работает ) Щас буду разбиратсья че к чему :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования