Nous sommes actuellement le 29 Juin 2026, 03:39

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 9 message(s) ] 
Auteur Message
 Sujet du message: Crack SQL demmandé
MessagePublié: 26 Juin 2002, 13:03 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
J'arrive pas a faire de commande sql pour obtenir les infos que je veux.

J'ai 5 tables en jeux, je vais les donner avec les colonnes utiles

liv
-------------
id
nom

Pal
-------------
id
id_liv
nom

SysPal
-------------
id_sys
id_pal

SysLiv
-------------
id_sys
id_liv

Sys
-------------
id
nom

File
-------------
id_sys
nom


Je peux donc avoir ces deux arboressences:

Liv
--sys
----file

Liv
--Pal
----Sys
------File

Je tente de trouver une requête sql qui va me retourner:
liv.nom pal.nom sys.nom nombreFichier (nombre dans le sys du pal (si existant) de la liv)

et une autre:
liv.nom pal.nom nombreFichier (nombre dans le pal de la liv)

Quand une liv n'a pas de pal un null ferait mon affaire. Faudrait que ça marche dans access (j'ai essayé avec mySQL et Access et j'ai pas trouvé)... beau défi, entk pour moi s'en est tout un!


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Juin 2002, 13:14 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 15:10
Message(s) : 3551
Localisation : Beauport, Québec
Je ne sais pas si c'est ce que tu veux, mais essaye ça:

SELECT sys.nom, liv.nom, pal.nom
FROM ((sys LEFT JOIN sysliv ON sys.id = sysliv.id_sys) LEFT JOIN liv ON sysliv.id_liv = liv.id) LEFT JOIN pal ON liv.id = pal.id_liv;

_________________
Procyon,
Modérateur de la section Trouvailles


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Juin 2002, 13:59 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Procyon a écrit:
Je ne sais pas si c'est ce que tu veux, mais essaye ça:

SELECT sys.nom, liv.nom, pal.nom
FROM ((sys LEFT JOIN sysliv ON sys.id = sysliv.id_sys) LEFT JOIN liv ON sysliv.id_liv = liv.id) LEFT JOIN pal ON liv.id = pal.id_liv;


Il manque ce que je crois qui va être le plus dure, le nombre de fichiers.

Aussi ta requête retourne uniquement les liv qui ont pas de pal. Tous les sys sont là, mais lorsque j'ai un file qui a un sys un pal et un liv, liv et pal sont a vide.

J'avais réussi a faire l'inverse, peut-être qu'en mixant ma commande avec la tienne je vais lister l'ensemble, va rester le nombre de fichier... Caline que mon sql est loin!!!


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Juin 2002, 14:18 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 15:10
Message(s) : 3551
Localisation : Beauport, Québec
Pour le nombre de fichiers, tu n'as qu'à faire un COUNT avec un GROUP BY..

Ça ne devrait pas être trop compliqué! Dans access, dans la fenêtre des requêtes, clique avec le bouton de droit dans la liste des colonnes à afficher et coche "opérations" dans le menu contextuel et tu va pouvoir grouper directement par le constructeur de requêtes.

Faut dire que j''ai un peu de misère à te suivre par manque de contexte, j'sais pas si les résultats que j'affiche sont bons ou pas.. j'y vais par guess. liv j'sais pas c'est quoi, pal non plus...

_________________
Procyon,
Modérateur de la section Trouvailles


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Juin 2002, 14:35 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
celle-là fonctionne presque, il me manque juste d'affichier le nom des livraison pours lesquels un palier est existant...

Code :
SELECT  vss_livraison.nom, vss_palier.nom, vss_systeme.nom, count(vss_fichier.spec) as nbr_fichier
FROM (((((vss_systeme LEFT JOIN vss_systemelivraison ON vss_systeme.id =vss_systemelivraison.id_systeme)LEFT JOIN vss_livraison ON vss_systemelivraison.id_livraison = vss_livraison.idLEFT JOIN vss_systemepalier ON vss_systeme.id=vss_systemepalier.id_systeme)LEFT JOIN vss_palier ON vss_systemepalier.id_palier=vss_palier.id)LEFT JOIN vss_fichier ON vss_systeme.id=vss_fichier.id_systeme)
GROUP BY vss_systeme.nom,vss_palier.nom,vss_livraison.nom
ORDER BY vss_livraison.nom, vss_palier.nom, vss_systeme.nom;


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Juin 2002, 15:26 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 15:10
Message(s) : 3551
Localisation : Beauport, Québec
Ouin, rendu là, si tu veux que je t'aide plus, il va falloir m'expliquer le contexte dans lequel tes données sont, pourquoi ces noms de tables et de champ et surtout, les prémisses (les conditions présentes, les données accessibles avant le développement finalement) et les résultats escomptés que tu n'es pas en possibilité d'atteindre présentement.

Par exemple:

J'ai un répertoire avec 52 fichiers. J'ai enregistré le nom des fichiers avec un numéro unique dans la table "Fichiers" de la base de données . À chaque fichier est associé des droits d'utilisations que je veux gérer. J'ai pour chaque usager un enregistrement dans la table "Employés" et le lien qui donne les droits se trouve dans la table "FichiersEmployés". Je veux maintenant trouver le nombre d'employés qui ont moins d'un an d'ancienneté et qui des droits sur plus de 5 fichiers.

Évidement c'est un exemple, mais si je n'ai pas ce genre d'information, c'est difficile pas mal d'aider au niveau où tu le veux. Il faut comprendre le contexte pour bien analyser le besoin de résoudre ton problème...

_________________
Procyon,
Modérateur de la section Trouvailles


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Juin 2002, 16:02 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Je crois qu'a partir d'ici je vais pouvoir m'organiser... j'ai changer un peu la structure de la BD pour simplifier un tout ti peu mes choses. Une table de jointure au lieu de deux...

Merci, j'avais un peu de misère a utiliser les JOIN avec access, on dirait que access est beaucoup plus exigeant que mySQL au niveau de la structure des chaîne de commande SQL... maintenant je vois mieux comment access veut les avoir!


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Juin 2002, 16:06 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 15:10
Message(s) : 3551
Localisation : Beauport, Québec
Ok parfait alors!

Bonne chance dans ton projet!

_________________
Procyon,
Modérateur de la section Trouvailles


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Juin 2002, 22:07 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Procyon a écrit:
Ok parfait alors!

Bonne chance dans ton projet!


Après avoir joind mes 2 tables j'ai réussi du premier coup :)


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 9 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site