Я не уверен, что понимаю ваш вопрос, поскольку схема кажется странной.
Однако, похоже, что вы хотите получить:
- 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 и т. Д.