2012-05-23 6 views
0

Я пишу заявление SQL, который нужно:SQL Query HELP - Уплотненный Я думаю

  1. Посмотрите на работу с определенным числом
  2. спичек, что работа в другой таблице
  3. Показать результаты

Это то, что у меня есть.

select * from PreviousJobs pj, Jobs j where jobId = '273121' 
AND where (pj.sOtherRef = j.sOtherRef) = True  

Hmmmmm

ответ

4

Там нет вложенности необходимости; это просто JOIN, что требуется, и что лучше всего было бы написано с явными присоединиться к обозначениям:

SELECT cj.*, pj.* 
    FROM PreviousJobs AS pj 
    JOIN Jobs   AS cj ON pj.sOtherRef = cj.sOtherRef 
WHERE cj.jobId = '273121' 

Вам не нужен второй WHERE в своем заявлении (что является синтаксической ошибкой, вы должны снабдили нас с сообщением об ошибке, которое предоставила ваша СУБД). Вам не нужно сравнивать сравнение с TRUE.

Список таблиц с разделителями-запятыми в предложении FROM был необходим в SQL-86 и SQL-89, но не был необходим, поскольку поддержка SQL-92 была добавлена ​​в СУБД. Вы должны знать об этом, чтобы, если вы прочитаете старый SQL, вы знаете, что это значит. Но вы должны планировать использовать только новую нотацию JOIN, если не будет подавляющего (и недобросовестного) давления со стандартов на рабочем месте, чтобы использовать старые обозначения.

В зависимости от используемой СУБД вы можете обнаружить, что AS в псевдонимах таблицы не разрешено (Oracle), хотя стандарт говорит, что все в порядке. Такая разница заключается в том, что это хорошая идея включить информацию о вашей СУБД в вопрос.

+0

+1 за указание запятых-SEPA номинальный список стиля имен таблиц. Этот стиль уже давно прошел путь аналогового кирпичного телефона, и OP действительно нуждается в модернизации. –

4

Вам не нужны = True, или второй, где.

Просто

select * from PreviousJobs pj, Jobs j where jobId = '273121' 
AND pj.sOtherRef = j.sOtherRef 
+0

Nice :-) Спасибо – Mikey3Strings

1
  1. Посмотрите на работу с определенным числом: где JobId = «273121»
  2. матч, что работа в другой таблице: внутреннее соединение на pj.sOtherRef = j.sOtherRef
  3. Показать результаты: выберите * от PreviousJobs рг

запрос будет ..

select * 
    from PreviousJobs pj inner join Jobs j ON pj.sOtherRef = j.sOtherRef 
where j.jobId = '273121'