SOSOrdi.net
Identification
Pas encore inscrit(e) ? Cliquez-ici
Bandeaux anti-publicités informatifs dans une question donnée sur SOSOrdi.net pour désactiver les bloqueurs : qu'en pensez-vous ?
  • SOSMania : c'est comprehensible pour une association, bonne idée !
      33%
  • SOSPub(s) : peut-être un peu trop gros ou intrusif (j'en rêve la nuit !)
      17%
  • néoSOS : je ne les vois pas, j'ai désactivé mon bloqueur !
      0%
  • Ne sait pas / pas d'opinion
      50%
Voir les derniers sondages

Problèmes requete sous mySQL 3.23

Bonjour,

j'ai une table BATEAUX, une table PERIODE, et une table TARIFER
Dans BATEAUX j'ai le codebateau etc, dans période j'ai un code période, etc, et dans Tarfier j'ai le codeBateau et le CodePériode en cle primaire, puis un champ tarif.

Avec ça,
j'ai besoin d'une requete qui me permet d'afficher des périodes disponibles pour un bateau... Donc en gros, afficher toutes les périodes qui ne sont pas déjà inscrites dans la table tarifer pour le bateau choisi (le P1630 par ex)

J'ai déjà une requete sous forme de sous-requetes qui fonctionne sous les versions les plus récentes de mySQL, que voici :

select * from PERIODE where CodePeriode not in (select CodePeriode from TARIFER where CodeBateau='P1630')

Elle ne fonctionne pas sous MySQL 3.23, j'aimerai donc savoir s'il est possible d'écrire cette requete avec des jointures, ou de telle manière qu'elle fonctionne sous cette version.
si c'est possible, merci de me communiquer la requete lol.

Ne me demandez pas de mettre à jour le serveur, je ne peux pas ;) (je l'aurai déjà fait en plus)

Merci d'avance !
posté le 28 Sept 2005 dans la catégorie Programmation par spottydj
modifié le 28 Sept 2005

7 Réponses

Pourquoi se rouler un petit JOIN ?

select PERIODE.* from PERIODE
LEFT JOIN TARIFER ON PERIODE.CodePeriode=TARIFER.CodePeriode
where TARIFER.CodePeriode is NULL;
répondu le 28 Sept 2005 par Winator
Bon, grace a toi je suis sur une bonne piste, j'ai trouvé le fonctionnement basique de LEFT JOIN sur le net. Cela dit, ma sous requete est plus complexe que celle de l'exemple puisqu'elle a une clause where... qui n'est pas reprise dans ta requete ...

donc je cherche tjrs ...
répondu le 28 Sept 2005 par spottydj
 
Solution
Il suffit de rajouter un petit :
AND TARIFER.CodeBateau='P1630'
répondu le 28 Sept 2005 par demonkill
Merci de vos réponses ;)
Grace a des recherches sur LEFT JOIN et des problèmes du même type, j'ai pu trouver ma requete :D

Et demonkill a la bonne réponse !!!

Merci à vous deux ;)


Pour info : voici la requete qu fonctionne désormais ;)

SELECT periode.*
FROM periode LEFT JOIN tarifer ON periode.codeperiode = tarifer.codeperiode AND tarifer.codebateau='P1630'
WHERE tarifer.codeperiode is null;
répondu le 28 Sept 2005 par spottydj
Enfin Winator t'avais donné le gros de la requête ;)

Bizarre cependant que la 1ère ne fontionne pas, que te met t'il ?
répondu le 28 Sept 2005 par demonkill
Aidez SOSOrdi.net !
La première...

Ben mySQL 3.23 ne gère pas les sous-requetes,
et celle que Winator a donné ne retourne rien, puisque que le where n'est pas traduit.
répondu le 28 Sept 2005 par spottydj
Bon, Mr MySQL devra revoir sa doc 3.23. La requête est similaire, nom pour nom, à celle du manuel.
répondu le 28 Sept 2005 par Winator

Actualités / Articles / Astuces associés :

Questions associées:

5 réponses 14 vues
posté le 25 Jan 2006 dans la catégorie Programmation par patrick67
2 réponses 32 vues
posté le 7 Oct 2008 dans la catégorie Programmation par JC06
5 réponses 35 vues
posté le 11 Fév 2010 dans la catégorie Programmation par centauredu13
2 réponses 13 vues
posté le 17 Déc 2007 dans la catégorie Programmation par hsn
10 réponses 204 vues
Retour en haut
...