Справка по SQL-запросу для объединения двух таблиц - PullRequest
0 голосов
/ 18 ноября 2010

У меня есть две таблицы: одна звучит, а другая - дзюд

В моем случае у меня есть три столбца j1 , j2 , j3 (каждый имеет одно значение из jcode)

В дзюде у меня есть jcode и jname .

Я хочу отобразить jname в 3 разных выпадающих списках в зависимости от j1 , j2 , j3 .

Как мне создать свой SQL-запрос.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

Если вы разработаете требование (предоставив некоторые данные в таблицу и указав ожидаемый результат в виде тех же данных), это поможет.

Если вы хотите получить запрос, чтобы получить имена для набора входных данных (j1, j2, j3), в этом случае вам необходимо иметь внутренние запросы или несколько объединений.

select h.j1, hj1.jname, hj1.jcode, h.j2, hj2.jname, hj2.jcode, h.j3, hj3.jname, hj3.jcode
from heardt as h
inner join jud as hj1 ON h.j1 = hj1.jcode
inner join jud as hj2 ON h.j2 = hj2.jcode
inner join jud as hj3 ON h.j3 = hj3.jcode
where h.j1=@myj1 and h.j2=@myj2 and h.j3=@myj3
0 голосов
/ 18 ноября 2010

Я не уверен, что понимаю ваш вопрос, поскольку схема кажется странной.

Однако, похоже, что вы хотите получить:

  • Dropdown1: Показать jname, где находится jcode в ячейке J1 в сердце
  • Dropdown2: Показать jname, где jcode находится в j2 клетка в сердце
  • Dropdown3: Показать jname где jcode находится в ячейке j3 в heardt

Для этого ваши запросы могут быть:

select jname, jcode
from heardt
inner join jud ON heardt.j1 = jcode

select jname, jcode
from heardt
inner join jud ON heardt.j2 = jcode

select jname, jcode
from heardt
inner join jud ON heardt.j3 = jcode

Альтернатива, которая может вас заинтересовать, заключается в том, что если вы хотите получить для каждой строки heardt и трех jnames, соответствующих ей, вы можете сделать это:

select jud1.jname as jname1, jud2.jname as jname2, jud3.jname as jname3
from heardt
left join jud as jud1 on jud1.jcode = heardt.j1
left join jud as jud2 on jud2.jcode = heardt.j2
left join jud as jud3 on jud3.jcode = heardt.j3

Тем не менее, лучшим решением было бы создать таблицы, подобные этим (выберите лучшее название):

jud table
---------
jcode
jname

heardt table
------------
unsure on the purpose of this table

dropdown table (name this after whatever your dropdowns represent, maybe this is heardt)
----------
dropdownId

dropdownjuds table
-------------
dropdownId
jcode

Таким образом, вы можете выполнить запрос, как показано ниже, и вы не сохраняете столбец в раскрывающемся списке. Например, что если вам вдруг понадобится j4 позже - с помощью этого метода вы можете просто добавить новый dropdown и соответствующие записи в таблицу dropdownjuds. Что делать, если выпадающие списки имеют неровные числа? Я полагаю, что в настоящее время вы используете пустые значения, но зачем иметь столбцы j1 и j3, если в строке только j2? С предложенным дизайном вы обойдете это.

select jname 
from dropdownjuds ddj
inner join jud on ddj.jcode = jud.jcode
where dropdownId = *

Где * 1 для раскрывающегося списка1, 2 для раскрывающегося списка2 и т. Д.

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