2010-11-18 3 views
0

У меня есть две таблицы, одна heardt и другой является ДжудSQL запрос, чтобы объединить две таблицы помочь

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

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

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

Как я могу создать свой sql-запрос.

ответ

0

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

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

  • Dropdown1: Показать jname где jcode является в j1 клетке в heardt
  • Dropdown2: Показать jname где jcode находится в j2 клетки в heardt
  • 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 

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

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

где * 1 для dropdown1, 2 для dropdown2 и т.д.

+0

Спасибо. Я хочу точно, как вы поняли мой вопрос. – Ishan

+0

В первом предположении для каждого запроса я могу использовать строку для хранения значения и передать его в Dropdownlist. Как сделать это для второго? – Ishan

+0

Второй запрос не подходит для одного раскрывающегося списка - как вы знаете, правильно ли использовать «jname1» или «jname3», если вы не хотите специально связывать их со списками в неправильном коде. Я бы использовал первые запросы или мою предложенную ревизию схемы. –

0

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

Если у вас есть запрос на получение имен для набора входных данных (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 [email protected] and [email protected] and [email protected] 
Смежные вопросы