Requete SQL - syntaxe d'une requete SQL (novice)

Salut à tous,
voilà je debute avec le sql et access et j’ai un petit problème.
voila disons qu’on a une table PlaceParking et une table Voiture

PlaceParking
idPlace ----> id de place

Voiture
idVoiture ------> id de la voiture
idPlace -----> sa place dans le parking

les deux table sont liée avec PlaceParking.idplace et Voiture.idplace

voila donc mon problème est d’avoir une requete sql qui me permettrai d’avoir
la liste des places encore disponible du parking.

j’ai essayé

dataenvironnement.Mabase.Execute "Select idplace From PlaceParking, Voiture Where PlaceParking.idVoiture<>voiture.idVoiture

mais sa ne marche pas :frowning:

donc voila si quelqu’un connais la solution et merci d’avance.

Je ne suis pas très bon en SQL, mais déjà ton PlaceParking.idVoiture n’existe pas, ça serait plutôt ça:


dataenvironnement.Mabase.Execute "Select idplace From PlaceParking, Voiture Where PlaceParking.idPlace<>voiture.idPlace

Tu devrais récupérer les idplace qui ne sont pas référencés dans la table voiture, donc les places libres.

Une solution (pas forcément faisable sur tous les sgbd)


Select idplace From PlaceParking Where idplace NOT IN (Select idplace From Voiture);

Pour toutes les problématiques de jointures 0-1 c’est bien d’utiliser les jointures ouvertes, on en a souvent besoin (== left outer join qui renvoie tous les éléments d’une table, liés à une autre tables, qu’il existe ou non dans l’autre table, )

select p.idPlace from PlaceParking p left join Voiture v on p.idPlace = v.idPlace
where v.idPlace is null;

le not in marche très bien aussi, fait la même chose, mais risque d’être moins performant car c’est une requête imbriquée (qu’on peut utiliser, mais avec modération :wink: )