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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: запрос к двум таблицам

Сообщения:  [1-8] 

 
 автор: Anatoly_ua   (03.06.2008 в 15:24)   письмо автору
 
   для: Anatoly_ua   (02.06.2008 в 16:06)
 

И еще один апдейт :))
Оказалось, что если poz одинаковые, то нужно еще Group добавить:

SELECT news.*, pics.pic_name FROM news
LEFT JOIN pics ON news.id = pics.news_id AND pics.poz = (
 SELECT min(poz)
 FROM pics WHERE news.id = pics.news_id
)
GROUP BY news.id;


Вроде бы так работает как надо...

   
 
 автор: root   (02.06.2008 в 16:24)   письмо автору
 
   для: Anatoly_ua   (02.06.2008 в 16:06)
 

:)

   
 
 автор: Anatoly_ua   (02.06.2008 в 16:06)   письмо автору
 
   для: Root   (22.05.2008 в 17:06)
 

Только нужно чуть добавить:


SELECT news.*, pics.pic_name FROM news
LEFT JOIN pics ON news.id = pics.news_id AND pics.poz = (
 SELECT min(poz)
 FROM pics WHERE news.id = pics.news_id
); 

   
 
 автор: Anatoly_ua   (22.05.2008 в 17:29)   письмо автору
 
   для: Root   (22.05.2008 в 17:06)
 

Спасибо! :) Это, пожалуй, ближе к истине...

   
 
 автор: Root   (22.05.2008 в 17:06)   письмо автору
 
   для: Anatoly_ua   (22.05.2008 в 15:38)
 


SELECT news.*, pics.pic_name FROM news
LEFT JOIN pics ON pics.poz = (
 SELECT min(poz)
 FROM pics WHERE news.id = pics.news_id
);

   
 
 автор: Anatoly_ua   (22.05.2008 в 15:38)   письмо автору
 
   для: Root   (22.05.2008 в 14:44)
 

ого... Спасибо. Попробую

   
 
 автор: Root   (22.05.2008 в 14:44)   письмо автору
 
   для: Anatoly_ua   (22.05.2008 в 13:41)
 

как-то так :-/

SELECT news.*, pics.pic_name FROM news
LEFT JOIN
  (SELECT pics.news_id as pid, min(poz) as minpos
    FROM pics GROUP BY pics.news_id
  ) AS p ON news.id = p.pid
LEFT JOIN pics ON pics.poz = p.minpos;

   
 
 автор: Anatoly_ua   (22.05.2008 в 13:41)   письмо автору
 
 

есть две таблицы:

Первая NEWS с полями:
id
date
content

Вторая PICS с полями:
news_id
poz
pic_name

Т.е. каждой новости соответствует несколько (или ни одной) картинок. Причем картинки идут в заданном порядке (за что отвечает поле poz в PICS, но значения в этом поле произвольные, т.е. может быть 0, 1, 2..., а может 10, 20, 30 и т.п.)

Можно ли одним запросом получить массив вида
NEWS.date, NEWS.content, PICS.pic_name
где PICS.pic_name соответствует картинке из всех возможных для определенного news_id с мин. значением в поле poz (или пустое значение, если такой картинки нет)?

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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