Я пытаюсь выбрать строки с определенным именем столбца и заказать им другим именем столбца.
Вот моя проблема в упрощенные таблицы 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, но у них нет достаточных примеров усовершенствования.. и затем существуют также усовершенствованные, что я все еще озадачен на),
Если вы хотите сортировать по ВСЕМ таблицам одновременно (более новая запись из таблицы 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)
Псевдоним ваших таблиц в запросе, т.е.
SELECT t1.id, t2.username, ... FROM table1 as t1
Вы можете использовать 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;
Вы можете выбрать одинаковые имена столбцов из разных таблиц, например:
SELECT table1.username as t1user, table2.username as t2user...