Signaler

SQL : exclusion de résultats

Posez votre question Bertrand - Dernière réponse le 21 avril 2017 à 19:55 par yg_be
Bonjour,

Je (re) débute sur Access, je dois me replonger dedans après des années sans pratiquer, et je galère sur un problème qui me paraît pourtant simple !

J'ai trois tables : cables, locaux, et une table de jonction entre les deux (relation N-N entre câbles et locaux : un câble peut traverser plusieurs locaux).

Table "Cables" :

Cable Libelle
C1 Câble 1
C2 Câble 2
C3 Câble 3
C4 Câble 4
C5 Câble 5
C6 Câble 6

Table "Locaux" :

Local Description Secteur
L1 Local 1 S1
L2 Local 2 S1
L3 Local 3 S2

Table "Jonction" :
Cable Local
C1 L1
C1 L2
C1 L3
C2 L1
C3 L2
C4 L2
C4 L3

Je voudrais une requête SQL de sélection qui m'affiche les câbles qui ne passent PAS par le local L1 (résultat : C3, C4).

Merci d'avance !




Afficher la suite 
Utile
+0
plus moins
Bonjour, je pense que la requête que vous voulez est: SELECT Cable FROM Jonction WHERE Local != "L1"
Donnez votre avis
Utile
+0
plus moins
Non :-( cette requête donne :

C1
C1
C3
C4
C4
Nanashi17 51Messages postés mardi 28 mars 2017Date d'inscription 21 avril 2017 Dernière intervention - 21 avril 2017 à 11:19
Avez vous essayez sans les guillemet autour de L1 ?
Répondre
Donnez votre avis
Utile
+0
plus moins
Ah je me suis planté de forum, je travaille sur Access, SQL Server, désolé !

La requête que j'ai pour l'instant est :

SELECT Jonction.Cable
FROM Jonction
WHERE Jonction.[Local]<>"L1";

Mais elle donne comme résultat C1 C1 C3 C4 C4, pas C3 C4.
Nanashi17 51Messages postés mardi 28 mars 2017Date d'inscription 21 avril 2017 Dernière intervention - 21 avril 2017 à 11:43
Avez vous essayé de changer <> par != ? Si oui alors le problème pourrait peut-être venir des crochets autour de Local.
Répondre
Donnez votre avis
Utile
+0
plus moins
  • Access, pas SQL Server
Donnez votre avis
Utile
+0
plus moins
J'ai enlevé les [] autour de local, même résultat C1 C1 C3 C4 C4.
Par contre != au lieu de <> me met une "erreur de syntaxe..."
Nanashi17 51Messages postés mardi 28 mars 2017Date d'inscription 21 avril 2017 Dernière intervention - 21 avril 2017 à 12:09
Est ce que le nombre des tables avant le nom des colonnes est obligatoire dans votre configuration ou cela vous affiche une autre "erreur de syntaxe..." ?
Répondre
Donnez votre avis
Utile
+0
plus moins
Non effectivment ça n'est pas obligatoire, la requête suivante donne le même résultat :

SELECT Cable
FROM Jonction
WHERE Local<>"L1";
Donnez votre avis
Utile
+0
plus moins
C5 et C6 sont des câbles qui ne passent PAS par le local L1.
es-tu certain d'avoir bien décrit ce que tu souhaitais?
Donnez votre avis
Utile
+0
plus moins
suggestion:
select distinct cable from ber_cable where cable not in (select distinct cable from ber_jonction where local='l1');
Donnez votre avis
Utile
+0
plus moins
ceci donne c3 et c4:
SELECT DISTINCT cable
FROM ber_jonction
WHERE 
cable not in (select distinct cable from ber_jonction where local='l1');
Donnez votre avis
Utile
+0
plus moins
écrit autrement:
SELECT  c.cable
FROM ber_cable c left join (select distinct cable from ber_jonction where local='l1') x
ON c.cable  = x.cable
WHERE x.cable is null;
Donnez votre avis
Utile
+0
plus moins
ou bien:
SELECT  distinct j.cable
FROM ber_jonction j left join (select distinct cable from ber_jonction where local='l1') x
ON j.cable  = x.cable
WHERE x.cable is null;
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !