Problème syntaxe requete SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème syntaxe requete SQL

par stomper98 » 04 avr. 2007, 10:17

edit : erreur corrigée je n'avais pas relu ma phrase :D

par Ryle » 04 avr. 2007, 10:14

Ce serait pas plutôt les anciennes version de MySQL qui n'acceptent pas les sous requêtes :-k (la version de phpMyAdmin étant indépendante de celle de mysql)

Quant à la jointure externe, elle permet effectivement une alternative à la sous requête dans ce cas, mais ça ne sera pas toujours possible :)

par stomper98 » 04 avr. 2007, 10:05

Après une recherche plus poussé sur Google, j'ai trouvé la solution

Les anciennes versions MySQL n'acceptent pas les requêtes imbriquées
* Avec une jointure externe pour remplacer une clause NOT IN.

SELECT * FROM table1 WHERE champ1 NOT IN (SELECT champ1 FROM table2)

devient :

SELECT table1.* FROM table1 LEFT JOIN table2
ON table1.champ1=table2.champ1
WHERE table2.champ1 IS NULL

Explication : contrairement à une jointure classique, le LEFT JOIN inclut aussi les enregistrements de table1 qui n'ont pas d'équivalent, c'est-à-dire un équivalent NULL, dans table2 (c'est précisément ceux-là qu'on recherche).
source -> http://mysql.developpez.com/faq/?page=COMPATIBILITE

par stomper98 » 04 avr. 2007, 09:12

Je précise que j'ai bien les même tables aussi bien sur le site qu'en local.

une idée ? :idea:

Problème syntaxe requete SQL

par stomper98 » 03 avr. 2007, 17:39

Bonjour,

Je suis contronté à léger soucis de syntaxe.

Ma requête fonctionne bien en local -> easyPhp (PhpMyAdmin 2.6.1)
en revanche quand je veux l'appliquer pour mon site (PhpMyAdmin 2.7.0 pl2) ca ne fonctionne pas, j'ai les message suivant :
#1064 - Erreur de syntaxe près de 'SELECT `ID_VEHICULE` FROM `vehicule` )
LIMIT 0, 30' à la ligne 1
Voici mon code :
$requete = "SELECT CHEMIN_PHOTO, ID_VEHICULE FROM photo WHERE ID_VEHICULE NOT IN(SELECT ID_VEHICULE FROM vehicule)";
    $connex->query($requete);	
    $connex->next_record();
J'ai cité les 2 versions de PhpMyAdmin car c'est la seule différence que je constate. Ceci étant je ne vois quelle modification apportée :(