2015-09-29 2 views
0

Я одна таблицы называетсяMySQL, как получить минимальный идентификатор ребенка, запрашивая родитель

Editoriale

, содержащее название и текстовое содержание и одну таблицы

editoriale_foto

, который содержит фотографии вышеупомянутой редакции.

Я хотел бы запросить

«Editoriale»

И есть также изображение обложки (это может быть в порядке первый вошел - так минимальный идентификатор относительно этой редакционной).

Я потерян в запросах.

Я пробовал этот, но у меня много изображений, и мне нужен только один.

SELECT e.*,ef.foto FROM editoriale e INNER JOIN editoriale_foto ef ON ef.editoriale = e.id ORDER BY e.id DESC 

Любое предложение?

Большое спасибо

+0

Я попытался это: SELECT e. *, Ef.foto FROM editoriale e INNER JOIN editoriale_foto ef ON ef.editoriale = e.id GROUP BY ef.editoriale ORDER BY e.id DESC. Он работает, но это не то, что я ищу. – Aptivus

+1

Dont заказывайте по убыванию, закажите по возрастанию, если вы хотите получить наименьший идентификатор. Если вы хотите добавить только одну строку в 'limit 1'. – chris85

+0

Не могли бы вы уточнить, хотите ли вы 1 строку из редакции в результате или много строк? Последний требует более сложного запроса, чтобы получить первый файл editoriale_photo. –

ответ

2
SELECT * 
FROM editoriale_foto ef 
LEFT JOIN editoriale e ON ef.editoriale = e.id 

дает весь список Fotos и подключенных к ним editoriales.

Если вам нужно выбрать только первую фотографию для каждого Editoriale вы можете сделать что-н, как это:

SELECT MIN(id) 
FROM editoriale_foto 
GROUP BY editoriale 

Таким образом, в результате вы можете использовать этот запрос:

SELECT * 
FROM editoriale_foto ef 
LEFT JOIN editoriale e ON ef.editoriale = e.id 
WHERE ef.id IN (
    SELECT MIN(id) 
    FROM editoriale_foto 
    GROUP BY editoriale 
) 
+0

ЭТО СОВЕРШЕННО !. Спасибо за подробный ответ. – Aptivus