|
|
|
| Есть таблица юзеров и таблица должностей
USER
ID
Name
JobID
JOB
ID
JobName
Каким запросом вывести название должности JobName вместо JobID?, т.к.
SELECT * FROM USER выводит ID должости а не само название? | |
|
|
|
|
|
|
|
для: yvgorshkov
(30.09.2012 в 00:35)
| | Можно воспользоваться запросом вида
SELECT
u.ID AS ID,
u.Name AS Name,
j.JobName AS JobName
FROM
`USER` AS u
LEFT JOIN
JOB AS j
ON u.JobID = j.ID
|
| |
|
|
|
|
|
|
|
для: cheops
(30.09.2012 в 08:00)
| | Чеопс, ты годами отвечаешь на вопросы, спасибо тебе за работу.
Я нашёл и другой способ:
SELECT
`USER`.`ID`,
`USER`.`Name`,
`JOB`.`JobName`
FROM
`USER`,
`JOB`
WHERE
`USER`.`JobID` = `JOB`.`ID`;
|
Есть ли отличия по скорости работы, правильности или другим параметрам между этими способами? | |
|
|
|
|
|
|
|
для: yvgorshkov
(30.09.2012 в 11:06)
| | Вместо WHERE лучше все-таки использовать ON - условия одинаковые, но ON работает в момент объединения таблиц, а WHERE уже после объединения - промежуточная таблица будет меньше. А так это почти идентичные запросы, запятая между таблицами в FROM суть оператор JOIN, я использовал его вариант LEFT JOIN, если нет NULL-данных в USER.JobID или JOB.ID, то эти операторы эквивалентны (если есть, то в случае оператора запятая, значения с NULL не попадут в выборку).
PS В русской транслитации я отзываюсь и на Хеопс :))). | |
|
|
|