Есть две таблицы
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 |
Если ты не заметил, у него в таблице у каждого юзера по несколько картинок, предлагаешь под каждую поля добавлять?
Спустя 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) |
я бы реализовал всёравно по-другому) ну тут кому как нравится)) |
Это вопросы проектирования БД, но никак не вкусовых предпочтений
Спустя 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 написал(а):
Этот запрос работает нормально
Но он не выводит записи users.`name` у которых нет img.`url_img`
Можно ли его кок то подправить чтоб он выводил записи у которых нет img.`url_img`?
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 написал(а):
И еще вопрос.
Тут выбирается первая картинка, а как сделать чтоб выбиралась последняя?
по полю url_img
Тут выбирается первая картинка, а как сделать чтоб выбиралась последняя?
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`