Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из двух таблиц, сортировка / 10 сообщений из 10, страница 1 из 1
13.08.2013, 21:24:01
    #38365352
tired2fight
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
Доброго времени суток.

Вкратце:

tbl1{
id,
something_else

}

tbl2{
tbl1_id,
user_id,
something_else
}

В первой таблице записи событий. Во второй - список событий, которые должны показываться первыми этому пользователю, то есть их кол-во не совпадает с общим кол-вом событий.

Как сделать так, чтобы выводились все события, но события, ид которых во второй таблице и которые подходят этому пользователю, выводились первыми?
...
Рейтинг: 0 / 0
13.08.2013, 21:38:57
    #38365360
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
приведите пример исходных данных и ожидаемого результата
...
Рейтинг: 0 / 0
13.08.2013, 21:43:09
    #38365364
tired2fight
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
javajdbc,

Преположим, у нас авторизируется юзер под ИД 37

у нас таблица

table1

id 1 2 3 4 6 7
event Событие1 Событие2 Событие3 Событие4 Событие6 Событие7


table2

event_id 4 7
user id 37 37

В данном случае нужно, чтобы вывело

4 Событие4
7 Событие7
1 Событие1
2 Событие2
3 Событие3
6 Событие6
...
Рейтинг: 0 / 0
13.08.2013, 22:24:10
    #38365396
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
схематично так
Код: sql
1.
2.
3.
4.
select t1.*, t2.*
from t1 left join t2
on t1.id=t2.t1_id
order by t1.id, case when t2.t1_id is null then 1 else 0 end, ...
...
Рейтинг: 0 / 0
13.08.2013, 23:12:41
    #38365429
tired2fight
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
Akina,

Спасибо. Но все равно не выдает первыми записи, ид которых во второй таблице..
...
Рейтинг: 0 / 0
13.08.2013, 23:27:53
    #38365438
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
Код: sql
1.
2.
select * from t1
order by if(exists(select 1 from t2 where t2.user_id=$user and t2.t1_id=t1.id),1,0), t1.id
...
Рейтинг: 0 / 0
13.08.2013, 23:29:38
    #38365440
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
опс... наоборот if(exists(...),0,1)
...
Рейтинг: 0 / 0
13.08.2013, 23:48:14
    #38365453
tired2fight
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
Cygapb-007,

Тоже не сортирует ) Выдает либо по порядку ИД первой таблице (если указывать , t1.id), либо в порядке записи (если не указано второе поле для сортировки, t1.id).
...
Рейтинг: 0 / 0
13.08.2013, 23:53:15
    #38365457
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
tired2fightПреположим, у нас авторизируется юзер под ИД 37

у нас таблица

table1

id 1 2 3 4 6 7
event Событие1 Событие2 Событие3 Событие4 Событие6 Событие7


table2

event_id 4 7
user id 37 37

В данном случае нужно, чтобы вывело

4 Событие4
7 Событие7
1 Событие1
2 Событие2
3 Событие3
6 Событие6
tired2fightНо все равно
А руки да голову приложить - не?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
mysql> create table t1(id int, event text);
Query OK, 0 rows affected (0.05 sec)

mysql> insert into t1(id,event) values (1,'Event 1'), (2,'Event 2'), (3,'Event 3'), (4,'Event 4'), (6,'Event 6'), (7,'Event 7');
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql> create table t2(t1_id int, user_id int);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t2(t1_id, user_id) values (4,37),(7,37);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select t1.*
    -> from t1 left join t2
    -> on t1.id=t2.t1_id
    -> order by case when t2.t1_id is null then 1 else 0 end;
+------+---------+
| id   | event   |
+------+---------+
|    4 | Event 4 |
|    7 | Event 7 |
|    1 | Event 1 |
|    2 | Event 2 |
|    3 | Event 3 |
|    6 | Event 6 |
+------+---------+
6 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
14.08.2013, 17:36:18
    #38366585
tired2fight
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из двух таблиц, сортировка
Всем большое спасибо, с утра все заработало, дело в руках )
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из двух таблиц, сортировка / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]