UNION ALL - ПРИСОЕДИНЯЙТЕСЬ, как ограничить до 1

0

пытаясь ограничить каждую строку... В моем запросе я получаю результаты и изображения для результатов, однако, если есть, например: у члена есть 2 картинки, он будет показывать два фото, и если ttimages имеет 30 снимков, это приведет к в показе 30 изображений и т.д.

То, что я пытаюсь получить, - это предел за каждый результат... показывая один результат из таблицы с одним изображением, а не с количеством х, что приводит к тому, сколько изображений находится в таблице изображений.

вот sql...

$sql = "
SELECT DISTINCT members.lastlogin as timeline_date, members.memusername as 
timeline_title, members.town as timeline_body, memberimages.images as 
timeline_img FROM members JOIN memberimages ON members.memid = 
memberimages.memid 
UNION ALL
SELECT DISTINCT ttages.dateadded as timeline_date, ttages.title as 
timeline_title, ttages.body as timeline_body, ttages_images.image as 
timeline_img FROM ttages JOIN ttages_images ON ttages.agesid = 
ttages_images.ageid
UNION ALL
SELECT DISTINCT sellit_listings.dateadded as timeline_date, 
sellit_listings.sittitlename as timeline_title, sellit_listings.sitcontent as 
timeline_body, sellit_images.images as timeline_img FROM sellit_listings JOIN 
sellit_images ON sellit_listings.listid = sellit_images.listid
UNION ALL
SELECT DISTINCT property_listings.dateadded as timeline_date, 
property_listings.paddress as timeline_title, property_listings.plistdiscript 
as timeline_body, property_images.image as timeline_img FROM 
property_listings JOIN property_images ON property_listings.propid = 
property_images.propid
UNION ALL
SELECT DISTINCT event_listings.dateadded as timeline_date, 
event_listings.eventtitle as timeline_title, event_listings.eventdescript as 
timeline_body, event_images.image as timeline_img FROM event_listings JOIN 
event_images ON event_listings.eventid = event_images.eventid
ORDER BY timeline_date DESC  LIMIT 70";
  • 0
    По тегу это похоже на MySQL.
Теги:

1 ответ

1
Лучший ответ

Если вам нужна одна строка результата для каждого члена, ttage и т.д., Тогда группируйте их:

SELECT
  m.lastlogin as timeline_date,
  m.memusername as timeline_title,
  m.town as timeline_body,
  MIN(mi.images) as timeline_img 
FROM members m
JOIN memberimages mi ON m.memid = mi.memid
GROUP BY m.memid
UNION ALL
...

Это стандартный SQL. В некоторых СУБД может потребоваться использование псевдоагрегационных функций для всех столбцов (т. MIN(m.lastlogin) вместо m.lastlogin и т.д.) Или поместить их в предложение GROUP BY.

  • 0
    Отлично спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню