powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из двух таблиц, сортировка
10 сообщений из 10, страница 1 из 1
Выборка из двух таблиц, сортировка
    #38365352
tired2fight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Вкратце:

tbl1{
id,
something_else

}

tbl2{
tbl1_id,
user_id,
something_else
}

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

Как сделать так, чтобы выводились все события, но события, ид которых во второй таблице и которые подходят этому пользователю, выводились первыми?
...
Рейтинг: 0 / 0
Выборка из двух таблиц, сортировка
    #38365360
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приведите пример исходных данных и ожидаемого результата
...
Рейтинг: 0 / 0
Выборка из двух таблиц, сортировка
    #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
Выборка из двух таблиц, сортировка
    #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
Выборка из двух таблиц, сортировка
    #38365429
tired2fight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо. Но все равно не выдает первыми записи, ид которых во второй таблице..
...
Рейтинг: 0 / 0
Выборка из двух таблиц, сортировка
    #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
Выборка из двух таблиц, сортировка
    #38365440
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опс... наоборот if(exists(...),0,1)
...
Рейтинг: 0 / 0
Выборка из двух таблиц, сортировка
    #38365453
tired2fight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,

Тоже не сортирует ) Выдает либо по порядку ИД первой таблице (если указывать , t1.id), либо в порядке записи (если не указано второе поле для сортировки, t1.id).
...
Рейтинг: 0 / 0
Выборка из двух таблиц, сортировка
    #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
Выборка из двух таблиц, сортировка
    #38366585
tired2fight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо, с утра все заработало, дело в руках )
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из двух таблиц, сортировка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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