Je ne suis pas sûr de comprendre votre question car le schéma semble étrange.
Cependant, il semble que vous voulez obtenir:
- Dropdown1: Afficher jname où jcode est dans une cellule j1 dans heardt
- Dropdown2: Afficher jname où jcode est dans une cellule j2 dans heardt
- Dropdown3: Afficher jname où jcode est dans une cellule j3 dans heardt
Pour faire que vos requêtes pourraient être:
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
Une alternative, qui peuvent vous intéresser, est si vous voulez obtenir pour chaque heardt
ligne et les trois jnames que vous pourriez faire ce match:
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
Cependant, une meilleure solution serait de faire des tableaux comme ceux-ci (choisir une meilleure appellation):
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
de cette façon, vous pouvez faire une requête comme ci-dessous, et y Vous ne stockez pas de colonne par liste déroulante. Par exemple, si vous avez besoin soudainement j4
plus tard - avec cette méthode, vous pouvez simplement ajouter un nouveau dropdown
et les entrées pertinentes à la table dropdownjuds
. Que faire si les listes déroulantes ont des nombres inégaux? Vous seriez en train d'utiliser des nulls actuellement, je suppose, mais pourquoi avoir des colonnes j1
et j3
si la ligne a seulement un j2
? Avec le design proposé, vous contournez cela.
select jname
from dropdownjuds ddj
inner join jud on ddj.jcode = jud.jcode
where dropdownId = *
Où * est 1 pour dropdown1, 2 pour dropdown2 etc.
Merci. Je veux exactement comment vous avez compris ma question. – Ishan
Dans votre première suggestion pour chaque requête, je peux utiliser une chaîne pour stocker la valeur et la passer dans la liste déroulante. Comment puis-je le faire pour le second? – Ishan
La deuxième requête ne convient pas pour une seule liste déroulante - comment savoir si utiliser 'jname1' ou 'jname3' à droite, sauf si vous voulez les lier spécifiquement à des zones de liste déroulante dans votre code qui est mauvais. J'utiliserais les premières requêtes, ou ma révision de schéma proposée. –