Ma requête passe en dessousEviter que le produit cartésien dans SQL lors de l'utilisation Lorsque, dans la clause
select a.col1,a.col2,b.col1,b.col2 from table1 a, table2 b
where a.col3=value and b.col2 in (select col from table1 where col3=val)
Cette donne répéter les valeurs Par exemple.
Résultat obtenu
-----------------------
S.No| Name| Value| Code
------------------------
1| Delhi| capital| 100
------------------------
2 |Mumbai| city | 101
------------------------
1 |Delhi| city| 101
------------------------
2 |Mumbai| capital |100
------------------------
Résultat attendu
-----------------------
S.No| Name| Value| Code
------------------------
1 |Delhi| capital |100
----------------------
2 |Mumbai| city |101
----------------------
J'ai essayé groupe par elle ne fonctionne pas. Comment cela pourrait-il être résolu?
données exemples
Tableau 1
------------------------
S.NO| Name |Type |Value
1| Delhi |BIGCITY| Capital
-------------------------
2| Mumbai| BIGCITY| City
------------------------
Tableau 2
---------------
Value |Code
---------------
Capital |100
---------------
City |101
--------------
select a.sno,a.name,b.value,b.code from table1 a, table2 b
where a.type=BIGCITY and b.col2 in (select value from table1 where col3=BIGCITY)
Pouvez-vous fournir des exemples de données à savoir les données de la table que vous essayez d'interroger? –
S'il vous plaît décrire ce que vous voulez réellement réaliser ici. De la requête seule, ce n'est pas très clair. Veuillez également fournir les tableaux d'entrée afin que l'exemple puisse être reproduit. –
Si vous avez utilisé une jointure de style "moderne" (ils n'ont été qu'une partie standard de SQL pendant un quart de siècle) et exprimé une véritable * condition de jointure * entre les tables 'a' et' b', vous ne le feriez pas J'ai une jointure cartésienne. –