Объединение двух таблиц с сортировкой по нескольким полям в MySQL - PullRequest
1 голос
/ 19 октября 2011

У меня есть две таблицы, и я должен присоединиться к ней.Табличные структуры:

tblproducts -> id (int, pk), имя (varchar)

tblphotos ---> id (int, pk), productid (int, fk), фотография (varchar), display_order (int)

Для каждого продукта может быть более одной фотографии, мне нужно получить одну фотографию с самым низким display_order.

Мне нужно,tblproducts.id, tblproducts.name, tblphotos.photo (фотография с наименьшим количеством display_order) также мне нужно получить весь список как tblproducts.id в порядке возрастания.

Ответы [ 2 ]

1 голос
/ 19 октября 2011
Select tblproducts.id, tblproducts.name, (Select Top 1 tblphotos.photo FROM tblphotos, tblproducts Where tblphotos.productid = tblproducts.id Order By display_order)
From tblproducts, tblphotos
Where tblproducts.id = tblphotos.productid
Order by  tblproducts.id

РЕДАКТИРОВАТЬ : Oppss! Я не увидел тег . Кстати, для MSSQL.

Да, этот запрос выглядит как повторяющийся. Я должен удалить Where предложение.

Select tblproducts.id, tblproducts.name, (Select Top 1 tblphotos.photo FROM tblphotos, tblproducts Where tblphotos.productid = tblproducts.id Order By display_order)
From tblproducts
Order by  tblproducts.id
0 голосов
/ 19 октября 2011

Я не проверял следующий запрос, но он должен работать, попробуйте:

SELECT 
    p.id, p.name, f.photo 
FROM
    tblproducts p,
    (
        SELECT productid, MIN(display_order) AS min_display_order 
        FROM tblphoto 
        GROUP BY productid
    ) AS t,
    tblphoto f 
WHERE 
    p.id = t.productid AND 
    t.productid = f.productid AND 
    t.min_display_order = f.display_order 
ORDER BY p.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...