Accueil | Aide en ligne | Annuaire | Sécurité | Articles | Astuces | Téléchargements | Association 


Mon compte SOS Ordi

Vous n'êtes pas identifié
[-> S'inscrire à SOS Ordi
[-> Mot de passe perdu ?
S'identifier


Rechercher sur SOS Ordi

Ok

Dans





 Catégories de l'aide en ligne

 Aide en ligne


 Saviez vous que ...

SOS Ordi est une association loi de 1901


 Partenaires

  SOS Ordi > Aide en ligne > Logiciel > Développement > Base de données > mySQL > erreur de syntaxe ?

erreur de syntaxe ?

14 réponse(s)
dont 1 ont aidé benefred à résoudre son problème

  Problème résolu posté le 01/04/2004 à 10:58
Profil Configuration PC
benefred


Aucun
État : Absent
Bonjour,

pour un forum en php et sql:

Voici une requete que je sort d'ACCESS, qui fonctionne sous phpmyadmin en local...

SELECT THEME_ID, THEME_USER, THEME_TEXT, THEME_DATE, THEME_POST, t_user.USER_NOM, THEME_POST_USER, t_user_1.USER_NOM FROM t_user INNER JOIN ( t_user AS t_user_1 INNER JOIN t_theme ON t_user_1.USER_ID = t_theme.THEME_POST_USER ) ON t_user.USER_ID = t_theme.THEME_USER ORDER BY THEME_DATE DESC LIMIT 0, 30

Mais voici le message d'erreur que j'ai sur le serveur de multimania :

You have an error in your SQL syntax near '( t_user AS t_user_1 INNER JOIN t_theme ON t_user_1.USER_ID = t_theme.THEME_POST' at line 1


Y a t'il un moyen de verifier si la syntaxe de la requete est valide....

Merci d'avance

   

Bas de page 


Information

Pour participer vous devez d'abord être membre ou identifié :
[-> M'identifier
[-> Je ne suis pas membre SOS Ordi, je souhaite m'inscrire
[-> J'ai perdu mon mot de passe


  Réponse postée le 01/04/2004 à 11:01
Profil du membre Configuration PC
MrSlayers
Administrateur


État : Absent
bonjour,

Cette requete fonctionne en local sous phpmyadmin et fonctionne aussi en local dans votre code php ?

Prière d'éviter d'écrire en majuscule (= cri), ou en langage codé (type SMS). Merci !
Pour plus d'info sur la charte : http://www.sosordi.net/Depannage/Charte.html

  Réponse postée le 01/04/2004 à 11:11
Profil du membre Configuration PC
benefred



État : Absent
Oui,
en local j'affiche bien le resultat de la requete, dans une page en php...

Cela vient peut etre du fait que j'utilise easyphp version 1.7 ,
et que chez multimania y n'y sont pas encore..?

Ou alors, une erreur dans la structure de ma base en ligne...(differente de celle en local),
mais pourtant cette requette n'est qu'une modification par rapport a celle qui fonctionnait avant....

  Réponse postée le 01/04/2004 à 11:18
Profil du membre Configuration PC
MrSlayers
Administrateur


État : Absent
Alors il faut verifier que la version de mysql sur multimania supporte le INNER JOIN... parce qu'il me semble que dans easyphp il y a mysql 4 et il se peut que ca soit mysql 3.x ...

et, par exemple, le UNION n'est disponible qu'en mysql 4....

Il va peut etre falloir simplifier votre requete...

Prière d'éviter d'écrire en majuscule (= cri), ou en langage codé (type SMS). Merci !
Pour plus d'info sur la charte : http://www.sosordi.net/Depannage/Charte.html

  Réponse postée le 01/04/2004 à 11:23
Profil du membre Configuration PC
MrSlayers
Administrateur


État : Absent
J'ai trouvé ca sur le site de mysql

Note that INNER JOIN syntax allows a join_condition only from MySQL 3.23.17 on. The same is true for JOIN and CROSS JOIN only as of MySQL 4.0.11.

Alors il faut verifier que c'est au moins la version 3.23.17 de mysql sur multimania. En mettant un phpinfo je pense qu'ils le permettent, ou alors en trouvant l'info sur multimania (j'ai pas trouvé moi ..)

Prière d'éviter d'écrire en majuscule (= cri), ou en langage codé (type SMS). Merci !
Pour plus d'info sur la charte : http://www.sosordi.net/Depannage/Charte.html

  Réponse postée le 01/04/2004 à 11:27
Profil du membre Configuration PC
babid



État : Absent
Salut,

Pourquoi tu n'utilise pas la clause where au lieu de INNER JOIN

Bye

Babid

Tout est possible, il suffit de le vouloir !!

  Réponse postée le 01/04/2004 à 11:48
Profil du membre Configuration PC
benefred



État : Absent
le phpinfo() donne : Mysql : 3.23.57

Donc, on peut supposé que c'est une version plus recente qui doit supporté les INNER JOIN


Est-ce risqué, si je mets le lien vers la page qui affiche phpinfo ?
(Si cela peut interer des personnes...biensur)


Pour repondre a babid, la requete précedente utilisé le WHERE
mais pour afficher les informations que je souhaite maintenant, je crois qu'il me faut du INNER JOIN,

En fait ma table 't_theme' contient entre autre :
l'identifiant de l'auteur du sujet et
l'identifiant de l'auteur du dernier message.

Donc je souhaite afficher le nom des deux personne qui se trouve dans 't_user'

C'est la solution que j'ai trouvé, je l'ai testé sur access en graphique puis j'ai sorti le code sql...



  Réponse postée le 01/04/2004 à 12:49
Profil du membre Configuration PC
babid



État : Absent
Salut,

Excuse moi d'insister mais je travaille qu'avec des tables lièes et jamais je n'ai utilisé INNER JOIN, je me sers exclusivement de la clause WHERE. Si tu veux je te contruis ta requête avec WHERE mais donne moi la structure des tables et ce que tu veux récupérer exactement.

De toute manière, les clauses WHERE et INNER JOIN amène au même résultats, exemple :
1)
SELECT l.Nom, e.Nom, c.Nom
FROM Logiciel AS l, Editeur AS e, Categorie AS c
WHERE l.Num_Editeur = e.Num_Editeur,
AND l.Num_Categorie = c.Num_Categorie

2)
SELECT l.Nom, c.Quantite, cl.Nom, c.Prenom
FROM Logiciel AS l
INNER JOIN Commande AS c INNER JOIN Client AS cl
ON c.Num_Client = cl.Num_Client
ON l.Num_Logiciel = c.Num_Logiciel

3)
SELECT cl.Nom, cl.Prenom, l.Nom,(l.Prix * cmd.Quantite) AS Montant, m.Nom
FROM Logiciel l, Client cl, Commande cmd, Monnaie m
WHERE cmd.Num_Client = cl.Num_Client
AND l.Num_Logiciel = cmd.Num_Logiciel
AND l.Num_Monnaie = m.Num_Monnaie

Voila, ces 3 requetes donne le meme résultats.

Bye

Babid

Tout est possible, il suffit de le vouloir !!

  Réponse postée le 01/04/2004 à 13:09
Profil du membre Configuration PC
MrSlayers
Administrateur


État : Absent
c'est clair que je n'utilise pas inner join non plus ca m'embrouille plus que tout loool


Prière d'éviter d'écrire en majuscule (= cri), ou en langage codé (type SMS). Merci !
Pour plus d'info sur la charte : http://www.sosordi.net/Depannage/Charte.html

  Réponse postée le 01/04/2004 à 13:42
Profil du membre Configuration PC
benefred



État : Absent
Voici les deux tables concernées :

#
# Structure de la table `t_theme`
# contient les sujets de discussion
#
# THEME_USER = auteur
# THEME_TEXT = sujet
# THEME_DATE = date du dernier message
# THEME_POST = nombre de messages
# THEME_POST_USER = auteur dernier message
#

CREATE TABLE `t_theme` (
`THEME_ID` int(5) NOT NULL default '0',
`THEME_USER` int(5) NOT NULL default '0',
`THEME_TEXT` text NOT NULL,
`THEME_DATE` varchar(20) NOT NULL default '',
`THEME_POST` int(5) NOT NULL default '0',
`THEME_POST_USER` int(5) NOT NULL default '0'
) TYPE=MyISAM;

# --------------------------------------------------------

#
# Structure de la table `t_user`
#

CREATE TABLE `t_user` (
`USER_ID` int(5) NOT NULL default '0',
`USER_NOM` char(25) NOT NULL default '',
`USER_PASS` char(15) NOT NULL default '',
`USER_MAIL` char(50) NOT NULL default '',
`USER_IMG` char(50) NOT NULL default ''
) TYPE=MyISAM;


Voila pour la structure...

la requete souhaitée :
| sujet | auteur | nombre mess | auteur dernier| date dernier |


Le probleme c'est que dans la table 't_theme', les auteurs sont identifier par leur 'USER_ID'


Comme effet avant je n'affiché que l'auteur du sujet :
SELECT THEME_ID,THEME_USER,THEME_TEXT,THEME_DATE,THEME_POST,USER_NOM
FROM t_theme,t_user
WHERE t_theme.THEME_USER = t_user.USER_ID
ORDER BY THEME_DATE

mais je souhaite ajouté l'auteur du dernier message, sans faire deux requetes differentes...

a+

  Réponse postée le 01/04/2004 à 14:23
Profil du membre Configuration PC
babid



État : Absent
Salut,

Voila ta requete :

SELECT t.THEME_ID, t.THEME_USER, t.THEME_TEXT,
t.THEME_DATE, t.THEME_POST,
t.THEME_POST_USER,
u1.USER_NOM AS NomUser,
u2.USER_NOM AS NomUserDerMess
FROM t_theme AS t,
t_user AS u1,
t_user AS u2
WHERE u1.USER_ID = t.THEME_USER
AND u2.USER_ID = t.THEME_POST_USER
ORDER BY THEME_DATE

Aller bonne chance clinoeuil.gif

Bye

Babid

Tout est possible, il suffit de le vouloir !!

  Réponse postée le 01/04/2004 à 14:56
Profil du membre Configuration PC
benefred



État : Absent
Cool !!!
Ok, j'ai testé ca marche bien...

Merci ....

a+
j'attends une propositon pour valider !!!

  Réponse postée le 01/04/2004 à 15:03
Profil du membre Configuration PC
babid



État : Absent
Salut

C cool, encore un problème résolu, on ouvre le champagne quand ???

Bye

Babid

Tout est possible, il suffit de le vouloir !!

  Réponse postée le 01/04/2004 à 19:56
Profil du membre Configuration PC
MrSlayers
Administrateur


État : Absent
Bravo babid smile.gif


Prière d'éviter d'écrire en majuscule (= cri), ou en langage codé (type SMS). Merci !
Pour plus d'info sur la charte : http://www.sosordi.net/Depannage/Charte.html

  Réponse postée le 02/04/2004 à 08:17
Profil du membre Configuration PC
babid



État : Absent
Merci MrSlayers,

Je suis surtout d'avoir pour une fois répondu avant vous clinoeuil.gif.

Aller bonne chance à tous & au prochain pb.

Babid

Tout est possible, il suffit de le vouloir !!



Haut de page 

 

Version 5.6 | Infos / Contacts | Partenariat | Publicité