Menu

SQL : exclusion de résultats [Fermé]

Bertrand - 21 avril 2017 à 10:41 - Dernière réponse :  Bertrand
- 24 avril 2017 à 11:44
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 

15 réponses

Nanashi17 195 Messages postés mardi 28 mars 2017Date d'inscription 19 juin 2017 Dernière intervention - 21 avril 2017 à 10:48
0
Utile
Bonjour, je pense que la requête que vous voulez est: SELECT Cable FROM Jonction WHERE Local != "L1"
0
Utile
1
Non :-( cette requête donne :

C1
C1
C3
C4
C4
Nanashi17 195 Messages postés mardi 28 mars 2017Date d'inscription 19 juin 2017 Dernière intervention - 21 avril 2017 à 11:19
Avez vous essayez sans les guillemet autour de L1 ?
0
Utile
1
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 195 Messages postés mardi 28 mars 2017Date d'inscription 19 juin 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.
0
Utile
  • Access, pas SQL Server
0
Utile
1
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 195 Messages postés mardi 28 mars 2017Date d'inscription 19 juin 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..." ?
0
Utile
Non effectivment ça n'est pas obligatoire, la requête suivante donne le même résultat :

SELECT Cable
FROM Jonction
WHERE Local<>"L1";
yg_be 5224 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 21 avril 2017 à 19:43
0
Utile
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?
yg_be 5224 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 21 avril 2017 à 19:46
0
Utile
suggestion:
select distinct cable from ber_cable where cable not in (select distinct cable from ber_jonction where local='l1');
yg_be 5224 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 21 avril 2017 à 19:49
0
Utile
ceci donne c3 et c4:
SELECT DISTINCT cable
FROM ber_jonction
WHERE 
cable not in (select distinct cable from ber_jonction where local='l1');
yg_be 5224 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 21 avril 2017 à 19:53
0
Utile
é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;
yg_be 5224 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 21 avril 2017 à 19:55
0
Utile
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;
0
Utile
Merci yg, c'est exactement ce que je cherchais !!!

PS : concernant ton commentaire sur C5 et C6, bonne remarque, effectivement j'aurais dû leur mettre des locaux dans la table Jonction. Dans l'exercice grandeur nature, ça sera le cas.

Encore merci, bonne journée.