Задача: Нормализация таблиц

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