Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вместо id название
 
 автор: yvgorshkov   (30.09.2012 в 00:35)   письмо автору
 
 

Есть таблица юзеров и таблица должностей
USER
ID
Name
JobID

JOB
ID
JobName

Каким запросом вывести название должности JobName вместо JobID?, т.к.
SELECT * FROM USER выводит ID должости а не само название?

  Ответить  
 
 автор: cheops   (30.09.2012 в 08:00)   письмо автору
 
   для: 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

  Ответить  
 
 автор: yvgorshkov   (30.09.2012 в 11:06)   письмо автору
 
   для: cheops   (30.09.2012 в 08:00)
 

Чеопс, ты годами отвечаешь на вопросы, спасибо тебе за работу.
Я нашёл и другой способ:
SELECT
    `USER`.`ID`,
    `USER`.`Name`,
    `JOB`.`JobName`
FROM
    `USER`,
    `JOB`
WHERE
    `USER`.`JobID` = `JOB`.`ID`;


Есть ли отличия по скорости работы, правильности или другим параметрам между этими способами?

  Ответить  
 
 автор: cheops   (30.09.2012 в 20:32)   письмо автору
 
   для: yvgorshkov   (30.09.2012 в 11:06)
 

Вместо WHERE лучше все-таки использовать ON - условия одинаковые, но ON работает в момент объединения таблиц, а WHERE уже после объединения - промежуточная таблица будет меньше. А так это почти идентичные запросы, запятая между таблицами в FROM суть оператор JOIN, я использовал его вариант LEFT JOIN, если нет NULL-данных в USER.JobID или JOB.ID, то эти операторы эквивалентны (если есть, то в случае оператора запятая, значения с NULL не попадут в выборку).

PS В русской транслитации я отзываюсь и на Хеопс :))).

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования