powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос.
7 сообщений из 7, страница 1 из 1
Помогите составить запрос.
    #38360239
Фотография paha4444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 2 таблицы
1 таблица - Объявления
2 таблица содержит изображения к объявлениям.

Мне нужно в одном запросе выбрать все объявления и к каждому объявлению выбрать только 1 изображение из 2 таблицы(поле image_path).

Таблица 1 - ads
поля id,text

Таблица 2 - image_ads
поля id,id_ads,image_path

Пробую:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT country.name as country_name,
             region.name as region_name,
             rayon.name as rayon_name,
             m_r.name as m_r_name,
             i_ads.image_path as image_path
             
  
      FROM ads AS ads
      LEFT JOIN
      (
        select * from image_ads where image_ads.id_ads = ads.id LIMIT 1
      ) AS i_ads ON i_ads.id_ads = ads.id



Неработает.
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38360252
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paha4444,

Доку по джойнам - читали? И не будет работать. В Мускуле нет коррелированных подзапросов в секции from.

В подзапрос воткните первую таблицу ишо раз и там тогда можно будет сделать лимит. Только чем он вам "там" поможет - ума не приложу.

Правильнее сделать простой левый джойн со второй таблицей и сгруппировать по первой, оставив из второй одно изображение через мин или макс номер (первое или последнее, как нравится).

Или нумеровать все и брать по заданному номеру (читайте фак по нумерации записей).

как-то так.
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38360258
Фотография paha4444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот группирую по первой

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  $q="SELECT country.name as country_name,
             region.name as region_name,
             rayon.name as rayon_name,
             m_r.name as m_r_name,
             i_ads.image_path as image_path
             
  
      FROM ads AS ads   
    

    
      LEFT JOIN image_ads AS i_ads ON i_ads.id_ads = ads.id 


      
      LEFT JOIN micro_rayon AS m_r ON m_r.id = ads.id_micro_rayon
      LEFT JOIN rayon ON rayon.id = ads.id_rayon
      LEFT JOIN region ON region.id = ads.id_region
      LEFT JOIN country ON country.id = ads.id_country      
            
  
   LIMIT 0,10 GROUP BY ads.id"; 



Неработает.
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38360259
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paha4444,

а что пишет? :)
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38360263
Фотография paha4444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, сделал!

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  $q="SELECT ads.id,
             country.name as country_name,
             region.name as region_name,
             rayon.name as rayon_name,
             m_r.name as m_r_name,
             i_ads.image_path as image_path
             
  
      FROM ads AS ads   
    

    
      LEFT JOIN image_ads AS i_ads ON i_ads.id_ads = ads.id 


      
      LEFT JOIN micro_rayon AS m_r ON m_r.id = ads.id_micro_rayon
      LEFT JOIN rayon ON rayon.id = ads.id_rayon
      LEFT JOIN region ON region.id = ads.id_region
      LEFT JOIN country ON country.id = ads.id_country      
            
  
   GROUP BY ads.id LIMIT 0,10"; 



Надо было добавить в SELECT ads.id, и внизу перед LIMIT GROUP BY ads.id
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38360269
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paha4444,

нет "не всё". При группировке, если не указан агрегат, Мускуль выберет "первый попавшийся", что потом легко выйдет вам "боком".

Уж будьте так добры, перечитайте вторую часть совета: поставьте выборку Min() или MAX() идента картинки. А ежели, остальные таблички могут тоже выдать "больше одной записи", то и к ихним полям надо прилепить агрегатные функции. Иначе, вам на зачете - ручки пообрывают. И правильно сделают.
...
Рейтинг: 0 / 0
Помогите составить запрос.
    #38360273
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]