Requête SQL
Résolu
dutche
Messages postés
83
Statut
Membre
-
mouè Messages postés 32 Statut Membre -
mouè Messages postés 32 Statut Membre -
Bonjour,
Voici une partie de ma BD SQL Server 2000,
j'ai deux tables Personne(Code, Nom, Prénom) et Epoux(Code_epoux, Code_epouse, Date_mar)
NB: code_epoux et code_epouse sont issu de table Personne (Code) lors de la migration de la clé: Personne était une table avec une relation reflexive.
J'aimerais selectionné le nom et le prénom de soit l'époux de la personne (avec le code fourni en paramête ) ou l'epouse de la personne.
Ex: Personne (1, Riberry, Franck)
Personne(2, Kate, wintsley)
Personne(3, Durand, Arnaud)
Epoux(1,2, 14/02/2009)
Lorsque le code fournit en paramètre est 1 par exple je voudrais avoir : Kate Wintsley
Lorsque le code fournit en paramètre est 2 par exple je voudrais avoir : Riberry Franck
J'espère me faire comprendre.
Voici une partie de ma BD SQL Server 2000,
j'ai deux tables Personne(Code, Nom, Prénom) et Epoux(Code_epoux, Code_epouse, Date_mar)
NB: code_epoux et code_epouse sont issu de table Personne (Code) lors de la migration de la clé: Personne était une table avec une relation reflexive.
J'aimerais selectionné le nom et le prénom de soit l'époux de la personne (avec le code fourni en paramête ) ou l'epouse de la personne.
Ex: Personne (1, Riberry, Franck)
Personne(2, Kate, wintsley)
Personne(3, Durand, Arnaud)
Epoux(1,2, 14/02/2009)
Lorsque le code fournit en paramètre est 1 par exple je voudrais avoir : Kate Wintsley
Lorsque le code fournit en paramètre est 2 par exple je voudrais avoir : Riberry Franck
J'espère me faire comprendre.
A voir également:
- Requête SQL
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Sql (+) - Forum Programmation
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
4 réponses
SELECT Personne.Nom
FROM Personne
WHERE Personne.Code IN
((SELECT Personne.Code
FROM Personne, Epoux
WHERE Personne.Code = Epoux.Code_epoux
AND Code_epouse = 'toncode')
OR
(SELECT Personne.Code
FROM Personne, Epoux
WHERE Personne.Code = Epoux.Code_epouse
AND Code_epoux = 'toncode'))
Ca marche... peut être... mais c'est super moche.
FROM Personne
WHERE Personne.Code IN
((SELECT Personne.Code
FROM Personne, Epoux
WHERE Personne.Code = Epoux.Code_epoux
AND Code_epouse = 'toncode')
OR
(SELECT Personne.Code
FROM Personne, Epoux
WHERE Personne.Code = Epoux.Code_epouse
AND Code_epoux = 'toncode'))
Ca marche... peut être... mais c'est super moche.
une idée à revoire bien sûre
au lieu de 2 tables tu crées 3 tables
-Personne(code,Nom,Prenom)
-Epoux(code_epoux,date_mariage)
-Epouse(code_epouse,date_mariage)
et dans ce cas je pense que la requette sera plus simple
mais bon tout depend de comment ta construit ta base
au lieu de 2 tables tu crées 3 tables
-Personne(code,Nom,Prenom)
-Epoux(code_epoux,date_mariage)
-Epouse(code_epouse,date_mariage)
et dans ce cas je pense que la requette sera plus simple
mais bon tout depend de comment ta construit ta base
Excusez moi pour le retard avec lequelle je vous envoie mon message,
Tout d'abord je tiens à vous remercier pour vos reponses.
L'idée de bwaz de créer 3 tables n'est pas mauvaise mais elle aurait pour conséquence de grossir ma bd.
Grâce à Dieu j'ai eu une solution 3 jours après avoir mis en ligne ce message mais pour un problème de connexion je n'ai pas pu le bublié. Voici ma reponse:
declare @code int, @code_epouse int, @code_epoux int
set @code=valRech -- valeur rechercher
set @code_epoux=(Select code_epoux from epoux
where code_epouse=@code)
set @code_epouse=(select code_epouse from epoux
where code_epoux=@code)
SELECT nom, Prenoms
FROM Personne P INNER JOIN Epoux E on Code=Code_epoux or Code=Code_epouse
WHERE Code in (
Select Case
when @code in (Select Code_epoux from Epoux) then @code_epouse
when @code in (Select Code_epouse from Epoux) then @code_epoux
End As Code)
c'est peut être un peu lourd mais ça marche bien.
Merci
Tout d'abord je tiens à vous remercier pour vos reponses.
L'idée de bwaz de créer 3 tables n'est pas mauvaise mais elle aurait pour conséquence de grossir ma bd.
Grâce à Dieu j'ai eu une solution 3 jours après avoir mis en ligne ce message mais pour un problème de connexion je n'ai pas pu le bublié. Voici ma reponse:
declare @code int, @code_epouse int, @code_epoux int
set @code=valRech -- valeur rechercher
set @code_epoux=(Select code_epoux from epoux
where code_epouse=@code)
set @code_epouse=(select code_epouse from epoux
where code_epoux=@code)
SELECT nom, Prenoms
FROM Personne P INNER JOIN Epoux E on Code=Code_epoux or Code=Code_epouse
WHERE Code in (
Select Case
when @code in (Select Code_epoux from Epoux) then @code_epouse
when @code in (Select Code_epouse from Epoux) then @code_epoux
End As Code)
c'est peut être un peu lourd mais ça marche bien.
Merci
Je galère également sur une requête:
Il faut que j'affiche la dernière fois que chaque client à commandé un produit de tel ou tel famille de produit.
Pour cela j'ai une table article avec code article, code regroupement (famille d'article).
une table client avec toute les infos client et code client.
et une table qwery avec code article, code client, année, mois, jour.
Voila en gros mon problème. J'espère que quelqu'un pourra m'aider.
Il faut que j'affiche la dernière fois que chaque client à commandé un produit de tel ou tel famille de produit.
Pour cela j'ai une table article avec code article, code regroupement (famille d'article).
une table client avec toute les infos client et code client.
et une table qwery avec code article, code client, année, mois, jour.
Voila en gros mon problème. J'espère que quelqu'un pourra m'aider.