J'ai une table comme ceci:
Personne Tableau:Sql subselect par clé étrangère
Name | Age | FK Adress
Thomas | 50 | 1
Lisa | 20 | 1
Lisa | 20 | 2
Ramon | 31 | 3
Kata | 56 | 4
Thomas | 50 | 5
Robert | 73 | 6
Karl | 78 | 7
Edda | 11 | 8
Yogi | 22 | 9
Maintenant que l'utilisateur veut avoir toutes les adresses où thomas 50 ET lisa 20 les deux doivent être. Je veux retourner seulement FK 1.
Ma solution est le (exemple de code) suivant:
select fk
from person
where name = thomas and age = 50
and fk in
(select fk from person where name = lisa and age = 20)
Cela fonctionne, mais donne une meilleure solution que subselect?
Peut-être qu'il me manque quelque chose, mais je ne comprends pas d'où vient l'adresse d'une table dans votre solution. – Twelfth
C'est une supposition qu'il y a une autre table, puisque le champ est un FK. Un FK est une clé d'une autre table, donc .. :) S'il n'y a pas de telle table, alors votre auto-jointure est une solution parfaite (c'est une bonne solution quand même, +1), mais dans ce cas, le terme 'FK' serait très déroutant. :) – GolezTrol
AH oui, je vois ce que vous allez faire maintenant ... commencer à la table primaire et rejoindre le FK. C'est une idée plus propre. Heh, 3 alternatives est toujours seulement +1 pas +3;) – Twelfth