SQL 2 colonnes qui ont la même condition

Résolu/Fermé
julien37 - 22 juil. 2009 à 14:15
 Kicyfroth - 23 juil. 2009 à 10:23
Bonjour à tous,

En fait je travail sur deux tables différentes. Dans une table j'ai deux colonnes (Gérant et Comptable) avec des numéros et dans une autre table j'ai une liste de numéro qui correspond à chaque fois à un nom.

J'aimerais que pour chaque ligne il me mette le nom du gérant et sur la colonne d'à côté celui du comptable. J'ai testé deux requêtes qui me mettent les résultats sur deux lignes au lieu d'une seule.

J'aimerai savoir s'il est possible d'avoir l'information sur une seule ligne. Je vous propose les deux différentes requêtes que j'ai effectuées :

SELECT Noimme,Nomimme,MONTH(i.Datfinex) as MoisArrete, Nomper
FROM sql_sgti.immeuble i,sql_sgti.personnalite p
where Nomimme not like '%*%' and (Noresp=p.Noperso or NoCompta=p.Noperso)
order by MoisArrete,Nomper,Noimme;

SELECT Noimme,Nomimme,MONTH(i.Datfinex) as MoisArrete,
IF(Noresp=p.Noperso,Nomper,0),
IF(NoCompta=p.Noperso,Nomper,0)
FROM sql_sgti.immeuble i,sql_sgti.personnalite p
where Nomimme not like '%*%' and (Noresp=p.Noperso or NoCompta=p.Noperso)
order by MoisArrete,Nomper,Noimme;

Suis'je sur la bonne piste avec l'une d'entre elle?? Qu'est-ce que j'oublie??

Merci d'avance à tous,
Julien
A voir également:

13 réponses

Tu peux montrer les résultats des requêtes ? Ou une partie si c'est gros ?
0
Et aussi quelques exemples d'enregistrements de tes tables ? C'est pas très clair tes noms de champs
0
Le résultat que je cherche c'est ça :

Noimme Nomimme MoisArrete Nomges Nomcompta
7005 XXX 3 BRICHET CHAPRON
7007 YYY 3 BRICHET CHAPRON
0015 ZZZ 3 DESMAISONS KAMLI


Avec la première requête ça me donne ça :

Noimme Nomimme MoisArrete Nomper
7005 XXX 3 BRICHET
7007 YYY 3 BRICHET
7005 XXX 3 CHAPRON
7007 YYY 3 CHAPRON
0015 ZZZ 3 DESMAISONS
0015 ZZZ 3 KAMLI


Avec la deuxième ça donne ça :

Noimme Nomimme MoisArrete IF(Noresp=p.Noperso,Nomper,0) IF(NoCompta=p.Noperso,Nomper,0)
7005 XXX 3 BRICHET 0
7007 YYY 3 BRICHET 0
7005 XXX 3 0 CHAPRON
7007 YYY 3 0 CHAPRON
0015 ZZZ 3 DESMAISONS 0
0015 ZZZ 3 0 KAMLI
0
Bon déjà tu veux 5 champs et t'en demandes que 4 dans ton select.
Il faut grouper par immeuble je pense. Essayes :

SELECT Noimme,Nomimme,MONTH(i.Datfinex) as MoisArrete, Nomper, NoCompta
FROM sql_sgti.immeuble i,sql_sgti.personnalite p
where Nomimme not like '%*%' and (Noresp=p.Noperso or NoCompta=p.Noperso)
group by Noimme;
order by MoisArrete,Nomper,Noimme
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Oups ! En mettant le point virgule à la ligne d'en dessous ^^
0
En fait c'est ce que je recherche pour les 4 premières colonnes sauf que pour la 5ème, au lieu des numéros compta, je veux le nom des comptables.

Ce nom est dans la même colonne et la même table que le nom des responsable. Le numéro des perso de la table personnalité peut etre soit un numéro de resp.soit un numéro de compta.

Est-ce possible d'effectuer cette requete??

Merci d'avance,
Julien
0
Où sont tes NoCompta et tes Noresp ? Si tu peux, donne moi quelques enregistrements de chaque table car là je comprend pas trop la structure de ta base.

Il m'embète un peu ton problème c'est pas évident...
Essaye une requête imbriquée avec en select un truc du genre :

SELECT Noimme,Nomimme,MONTH(i.Datfinex) as MoisArrete, Nomper as resp, Nomper as compta
tu devrai pouvoir ensuite restreindre resp et compta à ce que tu veux
et il faut que tu laisses le group by

Sinon tu peux toujours changer la structure de ta base pour te simplifier la vie... ^^
0
En fait mes Nocompta et Noresp je ne veux plus les voir apparaitre car ce sont des numéros et moi je veux le nom qui correspondent à ces numéros, sachant qu'un immeuble possède un responsable et un comptable.

Je ne vois pas ce que tu veux me dire avec ta requete? Et je ne sais pas non plus comment faire pour simplifier la table? As tu des idées?

En tout cas je te remercie déjà de t'interesser à mon problème et de me proposer des solutions...
0
C'est bon j'ai trouvé en fait.

J'ai renommé la table personnalité de 2 façon différente, ce qui m'a permis de faire 2 fois la même condition mais sql le voit de façon différente.

Merci pour tout, c'est grâce à toi que j'ai trouvé, tu m'as bien aiguillé...
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
23 juil. 2009 à 10:13
Bonjour
En joignant 2 fois la table, ça doit faire un truc comme ça :
SELECT Noimme,Nomimme,MONTH(i.Datfinex) as MoisArrete, resp.Nomper, com.Nomper
FROM sql_sgti.immeuble i, sql_sgti.personnalite comp, sql_sgti.personnalite resp
Where Noresp=resp.Noperso
and NoCompta=comp.Noperso
and Nomimme not like '%*%'
group by Noimme
order by MoisArrete,Nomper,Noimme
bonne journée
0
Excellent bravo ! Tu as laissé le group by ou il est plus utile ?
Je veux bien voir ta requête finale du coup ^^
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
23 juil. 2009 à 10:16
Re,
Autant pour moi, j'ai fait ça "à la volée", le group by n'est plus utile.....
SELECT Noimme,Nomimme,MONTH(i.Datfinex) as MoisArrete, resp.Nomper, com.Nomper
FROM sql_sgti.immeuble i, sql_sgti.personnalite comp, sql_sgti.personnalite resp
Where Noresp=resp.Noperso
and NoCompta=comp.Noperso
and Nomimme not like '%*%'
order by MoisArrete,Nomper,Noimme
0
Parfait c'était si simple ^^ merci ça m'a appris un truc ;)
0