[POSTGRESQL] division

division [POSTGRESQL] - Programmation

Marsh Posté le 14-12-2001 à 10:52:13    

je dois faire une BD pour une librairie  
j'ai les relations suivantes:
client(numcli,nomcli,addrcli,telcli,mel)
commande(numcom,datecom,aregler,numcli*)
 
je veux les client ayant passé plus de 2 commandes ,donc c'est une division ( si j'ai compris ) , mais lepb , c'est que je n'arrove pa a la mettre en place
merci , ce projet est a rendre ce soir , et ca fait 2 our que je suis sur cette requête ( heureusement que c'est la derniere )


---------------

Reply

Marsh Posté le 14-12-2001 à 10:52:13   

Reply

Marsh Posté le 14-12-2001 à 12:15:11    

Il y a plusieurs façons de faire.
Celle qui me vient le + rapidement à l'esprit :
select client.*
from client
where numcli IN (select numcli from commande group by numcli having count(*)>1);
 
C'est bourrin, mais ça devrait passer :)
(En gros, il y a + subtil si tu as le temps de creuser)

Reply

Marsh Posté le 14-12-2001 à 12:42:53    

merci ca marche ,  
tu me sauve la vie.


---------------

Reply

Marsh Posté le 14-12-2001 à 12:58:58    

arg , je me suis gourré, je t'ai filé une requete que j'ai deja fait ( meme si la manière dont tu l'as fait est plus compacte )
Celle qui merde chez moi c'est celle la  
voici mes tables (allegées des champs qui n'interviennent pas ):
 
client(numcli)
contient(numlivre,numcom)
livre(numlivre,numzone)
zone(numzone,nomzone)
commande(numcom,numcli);
 
et jke cherche a savoir quels clients ( numcli ) ont commandé au moins un livre dans chaque zone.
pour le moement ,j'en suis a compter les zone, compter le nombre de zone differente pour une commande puis comparere .
C'est cele là qu'on peut faire avec une division , et que j'arrive pas ( ma requete est trop laide pour le moment )
 
Wons> desole encore pour le copier-coller desastreux.


---------------

Reply

Marsh Posté le 14-12-2001 à 15:01:05    

Euh, atta
C'est + chaud là.
Je serais toi, je ferais ça en 2 requêtes.
Si tu peux créer des vues, je ferais :
 
CREATE VIEW toto AS
SELECT livre.numzone, contient.numcom
FROM livre, contient
WHERE contient.numlivre = livre.numlivre
GROUP BY contient.numcom, livre.numzone;
 
 
Et ma requête de sélection :
 
SELECT commande.numcli
FROM commande, toto
WHERE commande.numcom = toto.numcom
GROUP BY commande.numcli
HAVING COUNT(*) = (SELECT COUNT(*) FROM zone);
 
 
Par contre, je ne sais pas de quoi tu veux parler avec ta division...
En espérant que ça te va :) :hello:

Reply

Marsh Posté le 14-12-2001 à 16:11:52    

trop tard .
merci quand meme , mais la dead line est depassé.
:cry:
merci kan meme


---------------

Reply

Marsh Posté le 14-12-2001 à 16:13:46    

Ah... bah désolé pour la deadline. :(
 
Mais ça marche-t-y au moins ?
Pour savoir si je me suis pris le crane pendant 20 minutes pour rien ou pas :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed