Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/03/2011, 15h02   #1
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
Par défaut Aide sur syntaxe SQL

Bonjour a tous

Je suis desolé de déranger mais étant debutant avec d'ailleurs l'impression dde risquer d'y rester longtemps lol, je n'arrive pas à pondre une requete depuis hier.

Je vais essayer d'exposer mon problème le plus clairement possible:

J'ai 3 tables que je vais simplifier

Produit avec Code_Produit (Clé primaire)
Inventaire avec NumInv (Clé primaire)
Inventaire_Produit avec : NumLigne (Clé primaire)
Code_Produit
NumInv

Alors je souhaiterai retrouver tous les produits n'existant pas dans une sélection d'inventaire.

Concrètement je réalise 3 inventaires
Chaque inventaire contient des centaines de lignes d'inventaires (Inventaire_Produit)
Je souhaite donc mettre à zéro tous les produits n'existant pas dans ces lignes d'inventaires d'ou la requête recherchée.

Voici ma lamentable tentative :

Code :
1
2
3
4
5
6
SELECT *
FROM Produit P
JOIN Inventaire_Produit IP
ON IP.Code_Produit=P.Code_Produit
WHERE P.Code_Produit=IP.Code_Produit
AND IP.Num_Invent = %1
J'utilise cette requête SQL dans l'éditeur Windev

Merci d'avance
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 16h18   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Pour ce faire, vous pouvez au chois utiliser NOT IN, NOT EXISTS ou encore EXCEPT.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 17h11   #3
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
Hello Prof
Merci pour l'aide, j'ai donc essayé déjà de sélectionner les produits n'existant pas dans les lignes d'inventaires :

Code :
1
2
3
SELECT *
FROM Produit P
WHERE P.Code_Produit NOT IN Inventaire_Produit
Je viens de créer un produit dans produit et la requête ne me retourne aucun résultat
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 17h37   #4
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
Euréka! euh non je n'ai rien découvert mais ca fait du bien d'avancer,

Avec ce code cela fonctionne :

Code :
1
2
3
SELECT *
FROM Produit
WHERE Produit.Code_Produit NOT IN (SELECT Inventaire_Produit.Code_Produit FROM Inventaire_Produit WHERE Inventaire_Produit.Num_Invent=%1)
Maintenant le dernier souci est le suivant :

%1 représente un numéro d'inventaire

Comment faire une requête optimisée avec plusieurs numéros d'inventaire?

Faire une boucle pour chaque Num_Invent n'est pas je suppose "intelligent"

Merci d'avance
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 17h55   #5
Membre éprouvé
 
Inscription : avril 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 554
Points : 402
Points : 402
Salut!

J'ai donc mis une chaine en concaténant les Num_Invent et ca marche du tonnere!

Merci pour tout!
zouzoukha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h28.


 
 
 
 
Partenaires

Hébergement Web