[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка из БД
Ser18
Подскажите пожалуйста

Есть две таблицы

users и img

users
id | name
1 | Петя
2 | Коля


img
id | user_id | url_img
1 | 1 | img1.jpg
2 | 1 | img2.jpg
3 | 1 | img3.jpg
4 | 1 | img4.jpg
5 | 2 | img5.jpg
6 | 2 | img6.jpg
7 | 2 | img7.jpg

Как вывести всех пользователей и у каждого по одной картинке?

Что то типа такого, но это выведет все картинки, а надо чтоб пользователя и картинку
SELECT users.`name`, img.`url_img` FROM `users` INNER JOIN `img` ON users.`id`=img.`user_id`




Спустя 12 минут, 32 секунды (31.08.2012 - 13:10) Ramzes_Ra написал(а):
SELECT users.`name`, img.`url_img` FROM `users` INNER JOIN `img` ON users.`id`=img.`user_id`

фига се, ты так усложнил..
а не проще создать одну таблицу? и выводить просто из неё?
скажем
id | name | img

тогда и проблем нет..
SELECT * FROM `users`

do
{
echo 'name......img<br>';
}
while(пользователи есть);

вот что-то типа того

Не надо в программировании всё усложнять.. нужно искать лёгкие пути.. Поменьше текста, побольше функционала и понимания..

Спустя 5 минут, 11 секунд (31.08.2012 - 13:15) Shuriken написал(а):
Не совсем понятно, что ты хочешь сделать. У тебя к каждому пользователю привязано несколько картинок. Какую именно картинку ты хочешь вывести у кажлого пользователя? Приведи пример того, что должно получиться.

Спустя 18 минут, 31 секунда (31.08.2012 - 13:33) Ser18 написал(а):
Цитата
фига се, ты так усложнил..

Это я чтоб понятно было. На самом деле там и таблиц больше и полей
Цитата
У тебя к каждому пользователю привязано несколько картинок.

Именно так. Надо вывести пользователя и одну картинку (первую). Например:

Петя img1.jpg

Спустя 4 минуты, 23 секунды (31.08.2012 - 13:38) Placido написал(а):
Нужно добавить группировку
SELECT users.`name`, img.`url_img` FROM `users` INNER JOIN `img` ON users.`id`=img.`user_id` GROUP BY users.`name`

Спустя 38 секунд (31.08.2012 - 13:38) Ramzes_Ra написал(а):
Ser18
но я всёравно не вижу проблемы)
SELECT `url_img` FROM `img` WHERE `user_id` = `".$id."` LIMIT 1

Спустя 9 минут, 32 секунды (31.08.2012 - 13:48) Ser18 написал(а):
Цитата
Нужно добавить группировку

Спасибо!

Цитата
но я всёравно не вижу проблемы)
SELECT `url_img` FROM `img` WHERE `user_id` = `".$id."` LIMIT 1

Такой запрос пришлось бы запихивать в цыкл, а так одним апросом

Спустя 21 минута, 59 секунд (31.08.2012 - 14:10) killer8080 написал(а):
Цитата (Ramzes_Ra @ 31.08.2012 - 14:10)
фига се, ты так усложнил..
а не проще создать одну таблицу? и выводить просто из неё?

Прежде чем такие советы раздавать, почитай о нормализации БД
Цитата (Ramzes_Ra @ 31.08.2012 - 14:10)
скажем
id | name | img

Если ты не заметил, у него в таблице у каждого юзера по несколько картинок, предлагаешь под каждую поля добавлять? wink.gif

Спустя 7 минут, 52 секунды (31.08.2012 - 14:18) Игорь_Vasinsky написал(а):
если для таблиц у которых есть связи между собой - этим полям давать одинаковые названия, например uid - для id юзера, можно потом через USING джойнами пользоваться.

Спустя 42 минуты, 46 секунд (31.08.2012 - 15:01) Ramzes_Ra написал(а):
Цитата
Прежде чем такие советы раздавать, почитай о нормализации БД

кому как
Цитата
Если ты не заметил, у него в таблице у каждого юзера по несколько картинок, предлагаешь под каждую поля добавлять?

я бы реализовал всёравно по-другому) ну тут кому как нравится))

Спустя 1 час, 17 минут, 48 секунд (31.08.2012 - 16:18) killer8080 написал(а):
Цитата (Ramzes_Ra @ 31.08.2012 - 16:01)
я бы реализовал всёравно по-другому) ну тут кому как нравится))

Это вопросы проектирования БД, но никак не вкусовых предпочтений smile.gif

Спустя 2 часа, 42 минуты, 36 секунд (31.08.2012 - 19:01) Ramzes_Ra написал(а):
Цитата
Это вопросы проектирования БД, но никак не вкусовых предпочтений

ну я бы не сказал) можно любой скрипт по-разному написать..

Спустя 2 минуты, 51 секунда (31.08.2012 - 19:04) Игорь_Vasinsky написал(а):
Ramzes_Ra
не спорь. может в твои говнопроектах - это дело предпочтений, а по уму именно грамотное проектирование, руководствуясь как раз "нормализацией" - можно решить основной вопрос высоко нагруженного проекта

даже если пишешь сайт визитку - всё равно нужно делать по уму, т.к. дурные привычки потом хрен откинешь.

рано или поздно сам поймёшь.

Спустя 3 дня, 45 минут, 31 секунда (4.09.2012 - 19:49) Ser18 написал(а):
Этот запрос работает нормально
SELECT users.`name`, img.`url_img` FROM `users` INNER JOIN `img` ON users.`id`=img.`user_id` GROUP BY users.`name`

Но он не выводит записи users.`name` у которых нет img.`url_img`

Можно ли его кок то подправить чтоб он выводил записи у которых нет img.`url_img`?

Спустя 11 минут, 21 секунда (4.09.2012 - 20:01) Ser18 написал(а):
Разобрался

SELECT users.`name`, img.`url_img` FROM `users` LEFT JOIN `img` ON users.`id`=img.`user_id` GROUP BY users.`name`

Спустя 3 часа, 2 минуты, 10 секунд (4.09.2012 - 23:03) Ser18 написал(а):
И еще вопрос.
Тут выбирается первая картинка, а как сделать чтоб выбиралась последняя?

SELECT users.`name`, img.`url_img` FROM `users` LEFT JOIN `img` ON users.`id`=img.`user_id` GROUP BY users.`name`

по полю url_img

Спустя 1 час, 16 минут, 51 секунда (5.09.2012 - 00:20) Ser18 написал(а):
И тут разобрался

Может кому пригодится

SELECT users.`name`, img2.`url_img2` FROM `users` 
LEFT JOIN(
SELSECT `url_img` AS `url_img2`, `user_id` FROM `img` ORDER BY `url_img` DESC
) `img2` ON users.`id`=img2.`user_id` GROUP BY users.`name`
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.