sql оставил соединение с отчетливым правильным? - PullRequest
1 голос
/ 06 июля 2010

Я пытаюсь сделать соединение между таблицами 1 и 2, которые имеют отношение 1 ко многим.

таблица1 имеет следующие поля

  • созданный
  • контакт
  • ткей (суррогатный ключ)

таблица2 имеет следующие поля

  • tkey (первичный ключ)
  • статус
  • userfld1
  • описание

Я хочу показать все элементы в таблице2 с соответствующими элементами в таблице1, сгруппированные по таблице2.userfld1

select distinct t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact
from table2 as t2 left join table1 as t1 
      on t2.tkey = t1.tkey 
group by t2.userfld1 

это правильно?

Ответы [ 2 ]

1 голос
/ 06 июля 2010

Нет, это не правильно, вы не можете выбирать столбцы, которых нет в группе, если они не содержатся в статистической функции.И я думаю, что то, о чем ты просишь, даже не имеет смысла.По-моему, вы имеете в виду ORDER BY, а не GROUP BY:

SELECT DISTINCT t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact
FROM table2 t2
LEFT JOIN table1 t1
ON t2.tkey = t1.tkey 
ORDER BY t2.userfld1 

Три другие ошибки, которые я исправил:

  • SELECT ... FROM not SELECT ... WHERE
  • Вы должны присоединиться к таблице, а не к столбцу.
  • У вас не было псевдонимов после имен таблиц, но позже вы обратитесь к этим пропущенным псевдонимам.
0 голосов
/ 06 июля 2010

Я думаю, вы ищете порядок по группам, а не по группам, и я также исправил ваш запрос:

select t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact
where table2 t2 left join table1 t1
      on t2.tkey = t1.tkey 
order by t2.userfld1

Это то, что вы искали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...