Задача: Нормализация таблиц
1.
CROWS (28.02.2011 / 07:41)
Есть таблица effir:
| id(PK,auto) | id юзера | запись |
и
friends:
| id(PK,auto) | id юзера 1 | id юзера 2 |
В таблицу effir записываются последние действия всех юзеров.
Как выбрать всех друзей, напимер юзера id=1, из таблицы friends и посмотреть их последние записи в effir?
Причем, эти записи должны быть расположены в порядке убывания для всех друзей вместе.
Добавлено через 03:31 сек.
Пока нашел решения только как выводить действия друзей по очереди.
Например:
Вася добавляет комментарий.
Вася пишет сообщение.
Петя пишет сообщение.
Петя добавляет комментарий.
А надо так:
Вася добавляет комментарий.
Петя пишет сообщение.
Петя пишет сообщение.
Вася добавляет комментарий.
Т.е. записи отсортированные по id.
Задачу нужно решить не добавляя новых полей и не создавая новых таблиц для связи.
Добавлено через 04:35 сек.
Я чуть изменил названия и суть (чтобы вам было понятнее), но задача от этого не меняется.
2.
CROWS (05.03.2011 / 19:25)
Ноль?)
3.
Женек (06.03.2011 / 00:31)
через джоин сейчас не соображу как завернуть, а так выбирай сначала друзей в массив, а потом в запросе через in записи
4.
CROWS (06.03.2011 / 09:55)
3.
Basters, а хотя бы минимальный пример можно?
5.
Nu3oN (06.03.2011 / 10:12)
deleted
6.
Валерий (06.03.2011 / 10:23)
SELECT effir.*,users.name
FROM effir,users,friends
WHERE
((friends.user1='$id' AND effir.user=friends.user2 AND users.id=friends.user2) OR
(friends.user2='$id' AND effir.user=friends.user1 AND users.id=friends.user1))
ORDER BY effir.id;
7.
Nu3oN (06.03.2011 / 11:27)
6.
valerik, Зачем столько гемороя?
SELECT e.`text`, u.`name`
FROM `events` e, `users` u, `friends` f
WHERE u.`id` = {$id}
AND f.`user_one` = u.`id`
AND e.`user_id` = f.`user_two`
ORDER BY e.`id` ASC;
З.ы пока писал блог, ты опередил)))
8.
CROWS (06.03.2011 / 11:56)
Спасибо.
9.
Валерий (06.03.2011 / 12:09)
Nu3oN (6 Марта 2011 / 16:27)
6. valerik, Зачем столько гемороя?
SELECT e.`text`, u.`name`
FROM `events` e, `users` u, `friends` f
WHERE u.`id` = {$id}
AND f.`user_one` = u.`id`
AND e.`user_id` = f.`user_two`
ORDER BY e.`id` ASC;
З.ы пока писал блог, ты опередил)))
Дык нужный нам юзер в друзьях может быть как в столбце user1 так и в user2
10.
CROWS (06.03.2011 / 12:43)
Да, именно так.
11.
Nu3oN (06.03.2011 / 17:47)
Поправочка к моему запросу...
SELECT e.`text`, u.`name`
FROM `events` e, `users` u, `friends` f
WHERE f.`user_one` = {$id}
AND e.`user_id` = f.`user_two`
AND u.`id` = f.`user_two`
ORDER BY e.`id` ASC;
URL:
https://visavi.net/topics/19213