2012-11-10 2 views
0

У вас есть сайт с 2 столами (профиль и фотография). Я хочу получить один профиль с фотографией, но у меня много фотографий с одним профилем. Я хочу только одного.Получите один результат на sql

SELECT ph.path as photo, pro.id_profile, pro.name, pro.address 
FROM profile pro, photo_profile ph 
WHERE pro.id_profile = 41 
AND pro.id_profile = ph.id_profile; 

Пожалуйста, помогите!

+1

Это что-то вроде профилей facebook? – sikas

ответ

0

Вы можете использовать LIMIT или GROUP BY в зависимости от ваших потребностей, и с помощью надлежащего JOIN улучшит читаемость:

получить только первый результат вашего набора, используйте LIMIT:

SELECT ph.path as photo, pro.id_profile, pro.name, pro.address 
FROM profile pro 
JOIN photo_profile ph ON 
WHERE pro.id_profile = 41 AND pro.id_profile = ph.id_profile 
LIMIT 1; 

К группировать ваши результаты по ID профиля, использовать GROUP BY:

SELECT ph.path as photo, pro.id_profile, pro.name, pro.address 
FROM profile pro 
JOIN photo_profile ph ON pro.id_profile = ph.id_profile 
WHERE pro.id_profile = 41 
GROUP BY pro.id_profile; 
2

Вы должны быть способный использовать предложение limit оператора select для ограничения возвращаемых строк.

SELECT ph.path as photo, pro.id_profile, pro.name, pro.address 
FROM profile pro, photo_profile ph 
WHERE pro.id_profile = 41 
AND pro.id_profile = ph.id_profile 
LIMIT 1; 

Имейте в виду, что, без ORDER BY пункта, SQL не будет гарантировать которые строку, которую вы получите.

В качестве примера, скажем, у вас есть следующие имена в таблице: Allan, Barbara, Colin и Debbie. Запрос:

select name from people limit 1; 

поможет вам один строку, но неопределенную один. С другой стороны:

select name from people order by name asc limit 1; 

поможет вам Allan.

Полный синтаксис для MySQL select можно найти here, включая статью limit.

Имейте в виду, что limit может быть не во всех системах управления базами данных (это - это в MySQL, что является вашим конкретным случаем здесь). Например, DB2 использует FETCH FIRST n ROWS, чтобы сделать аналогичную вещь.

0

Если вы хотите знать, почему ваша база данных имеет более одной фотографии на профиле вы можете захотеть, чтобы отладить из результатов этого: -

SELECT * FROM profile pro, photo_profile ph WHERE pro.id_profile = ph.id_profile; 

Это просто обычный объединение профильных и photo_profile таблиц ,

Смежные вопросы