MySQL Select, столбец с тем же именем от нескольких таблиц, заказывает другим столбцом с тем же именем

Я пытаюсь выбрать строки с определенным именем столбца и заказать им другим именем столбца.

Вот моя проблема в упрощенные таблицы N:

table 1: id, username, datetime, comment

table 2: id, username, datetime, vote

.

.

.

table N: id, username, datetime, bought

Я хочу смочь выбрать все строки где username='Some Name', заказанный датой и временем - через все таблицы N.

--

Кстати, кто-либо знает о хорошей книге или ресурсе при изучении и осуществлении усовершенствованного SQL? (Попробованный SQLZoo, но у них нет достаточных примеров усовершенствования.. и затем существуют также усовершенствованные, что я все еще озадачен на),

10
задан ina 27 July 2010 в 08:05
поделиться

4 ответа

Если вы хотите сортировать по ВСЕМ таблицам одновременно (более новая запись из таблицы 3 появляется перед чем-то из таблицы 2 и т. Д.)

Самый простой способ сделать это для нескольких таблиц будет UNION:

(SELECT id, username, datetime FROM table 1 WHERE username = 'Some Name')
UNION 
(SELECT id, username, datetime FROM table 2 WHERE username = 'Some Name')
UNION
(SELECT id, somethingelse AS username, date as datetime FROM table 3 WHERE somethingelse = 'Some Name')
....
ORDER BY datetime DESC

Обратите внимание, что когда вы используете подобное объединение, все ваши операторы select должны возвращать одинаковое количество столбцов и иметь одинаковые имена (вы можете использовать для этого псевдонимы, как я показал выше в таблице 3)

7
ответ дан 4 December 2019 в 01:29
поделиться

Псевдоним ваших таблиц в запросе, т.е.

SELECT t1.id, t2.username, ... FROM table1 as t1
2
ответ дан 4 December 2019 в 01:29
поделиться

Вы можете использовать UNIONS.

Выбор должен быть примерно таким:

(SELECT comment, date FROM table1 WHERE username='Some Name')
UNION
(SELECT vote, date FROM table2 WHERE username='Some Name')
...
UNION
(SELECT bought, date FROM tableN WHERE username='Some Name')
ORDER BY date LIMIT 100;
1
ответ дан 4 December 2019 в 01:29
поделиться

Вы можете выбрать одинаковые имена столбцов из разных таблиц, например:

SELECT table1.username as t1user, table2.username as t2user...
1
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: