IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[Newbie] Qu'est-ce qui ne va pas dans cette requête ?…


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut [Newbie] Qu'est-ce qui ne va pas dans cette requête ?…
    Pardonnez mon inexpérience, mais je m'arrache les cheveux sur une requête que je ne comprends qu'à moitié (et encore …)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		// Ce select groupe par parent et trie par date
    		$query = "SELECT * FROM (
    		SELECT b.*, f.Nom, f.Prenom, 
    		CASE WHEN b.Parent is NULL b.ID ELSE b.Parent END AS b.Parent
    		FROM resa_blog b, resa_famille f
    		WHERE b.Rubrique = '$r' and b.Auteur = f.Membre and b.Annulation is NULL
    		)
    		ORDER BY date desc";
    Il n'y a aucun résultat à la requête
    mysql_num_rows(): supplied argument is not a valid MySQL result resource
    Qu'est-ce qui ne va pas là-dedans ?

    Merci pour votre aide.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Bonjour,

    Quel est l'intérêt du select * from (...) ? Si c'est pour trier par date, autant rajouter le ORDER BY à la fin de la requête imbriquée...
    Sinon, il manque, je pense, un alias à la requête imbriquée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * FROM (
    		SELECT b.*, f.Nom, f.Prenom, 
    		CASE WHEN b.Parent is NULL b.ID ELSE b.Parent END AS b.Parent
    		FROM resa_blog b, resa_famille f
    		WHERE b.Rubrique = '$r' and b.Auteur = f.Membre and b.Annulation is NULL
    		) as T
    		ORDER BY date desc
    Autre possibiliété : un problème dans l'interprétation de $r par PHP. Pour voir ça, il faut faire un echo de la requête, et nous la donner en retour...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 87
    Points : 41
    Points
    41
    Par défaut
    bonjour jai cree une fonction ki fait la modification mais je saia pa pk il me donne cette erreur
    il maffiche le message derreur et je suis pa arriver de le resoudre est ce ke vous pouvez maider svp

    //modify
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void modif(String Num, String Name, String Location)
    	{
    		MysqlAccess my=new MysqlAccess("mta_info");			
    		String sql;
    		sql="UPDATE db_project SET ";
    		sql+="'dbp_projectname'= " +"'"+Name+"'"+ ",";
    		sql+="'dbp_projectlocation'="+"'"+Location+"'" ;
    		sql+="where 'dbp_num'="+"'"+Num+"'";
     
    		my.startConnection();
    		my.executeUpdate(sql);
    		my.closeConnection();
     
    	}
    SQL Request : UPDATE db_project SET 'dbp_projectname'= 'mouradoudina','dbp_projectlocation'='marocc'where 'dbp_num'='09031985'
    SQLException: Erreur de syntaxe près de ''dbp_projectname'= 'mouradoudina','dbp_projectlocation'='marocc'' à la ligne 1
    SQLState: 42000
    VendorError: 1064

  4. #4
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 307
    Points : 114
    Points
    114
    Par défaut
    Je ne pense qu'il faut mettre le nom des champs entre '...'

    Peut etre faudrait t'il que tu arrives plutot a un resultat de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE db_project 
    SET dbp_projectname = 'mouradoudina', dbp_projectlocation = 'marocc' 
    WHERE dbp_num='09031985'
    Pensez au tag !!!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par ced Voir le message
    Quel est l'intérêt du select * from (...) ? Si c'est pour trier par date, autant rajouter le ORDER BY à la fin de la requête imbriquée...
    Sinon, il manque, je pense, un alias à la requête imbriquée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * FROM (
    		SELECT b.*, f.Nom, f.Prenom, 
    		CASE WHEN b.Parent is NULL b.ID ELSE b.Parent END AS b.Parent
    		FROM resa_blog b, resa_famille f
    		WHERE b.Rubrique = '$r' and b.Auteur = f.Membre and b.Annulation is NULL
    		) as T
    		ORDER BY date desc
    Autre possibiliété : un problème dans l'interprétation de $r par PHP. Pour voir ça, il faut faire un echo de la requête, et nous la donner en retour...
    Merci ced pour ta réponse.
    Malheureusement tes pistes ne résolvent pas le problème
    Ça ne viendrait pas plutôt de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN b.Parent is NULL b.ID ELSE b.Parent END AS b.Parent

    Sinon mora092 stp créé un fil personnel pour poser tes questions… parce que là ça pollue un peu quoi…

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * FROM (
    		SELECT b.*, f.Nom, f.Prenom, 
    		CASE WHEN b.Parent IS NULL b.ID ELSE b.Parent END AS b.Parent
    		FROM resa_blog b, resa_famille f
    		WHERE b.Rubrique = '$r' AND b.Auteur = f.Membre AND b.Annulation IS NULL
    		) AS T
    		ORDER BY date DESC
    Perso je ne mettrai pas "AS b.Parent" mais "AS Parent"

    de plus dans tes rubriques tu es sur que tu en as au moins une qui est egale a '$r' je trouve ca bisard une rubrique a $r

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 87
    Points : 41
    Points
    41
    Par défaut
    en fait cette requete je lai mis ds le syntaxe de java
    je crois ke je dois mettre '..' pr les noms des champs

  8. #8
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Si tu es sous SQLServer, la synthaxe du CASE est : CASE WHEN condition THEN action1 ELSE action2 END.
    Or, apparemment, il manque le THEN dans ta requête.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par ced Voir le message
    Si tu es sous SQLServer, la synthaxe du CASE est : CASE WHEN condition THEN action1 ELSE action2 END.
    Or, apparemment, il manque le THEN dans ta requête.
    J'ai mis (Lux08 : avec et sans les b.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN Parent is NULL THEN ID ELSE Parent END AS Parent
    Mais ça ne va toujours pas

  10. #10
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Quelle est l'erreur retournée quand tu lances la requête directement sous MySQL ?
    Autre piste, remplace le "b.*" par un nom de colonne (pour tester si c'est pas ça qui coince)...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par ced Voir le message
    Quelle est l'erreur retournée quand tu lances la requête directement sous MySQL ?
    SELECT *
    FROM (
    SELECT b. * , f.Nom, f.Prenom,
    CASE WHEN Parent IS NULL
    THEN ID
    ELSE Parent
    END AS Parent
    FROM resa_blog b, resa_famille f
    WHERE b.Rubrique = '$r'
    AND b.Auteur = f.Membre
    AND b.Annulation IS NULL
    )
    ORDER BY date DESC
    LIMIT 0 , 30

    MySQL a répondu:

    #1248 - Every derived table must have its own alias
    Et si je mets AS T :

    SELECT *
    FROM (
    SELECT b. * , f.Nom, f.Prenom,
    CASE WHEN Parent IS NULL
    THEN ID
    ELSE Parent
    END AS Parent
    FROM resa_blog b, resa_famille f
    WHERE b.Rubrique = '$r'
    AND b.Auteur = f.Membre
    AND b.Annulation IS NULL
    ) AS T
    ORDER BY date DESC
    LIMIT 0 , 30

    MySQL a répondu:

    #1060 - Duplicate column name 'Parent'

    Citation Envoyé par ced Voir le message
    Autre piste, remplace le "b.*" par un nom de colonne (pour tester si c'est pas ça qui coince)...
    A priori : pas de changement…


    Alors Docteurs ?…

  12. #12
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Bon, essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT *
    FROM (
    SELECT b. * , f.Nom, f.Prenom,
    CASE WHEN Parent IS NULL
    THEN ID
    ELSE Parent
    END AS Parent
    FROM resa_blog b
    INNER JOIN resa_famille f on b.Auteur = f.Membre
    WHERE b.Rubrique = '".$r."'
    AND b.Annulation IS NULL
    ) AS T
    ORDER BY T.date DESC
    Il reste un doute sur le fait d'appeler ton CASE "Parent". A vérifier et le renommer si ça plante.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  13. #13
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * FROM (   
    	SELECT b.*, f.Nom, f.Prenom, 
    	CASE WHEN b.Parent IS NULL then b.ID ELSE b.Parent END AS Parent
    	FROM resa_blog b, resa_famille f
    	WHERE b.Rubrique = '$r' AND b.Auteur = f.Membre AND b.Annulation IS NULL
    	)  T
    	ORDER BY date DESC
    Je pense que la tu ne dois plus avoir d'erreur

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    ced et Lux08 : Duplicate column name 'Parent'

  15. #15
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    Tente avec "AS Toto" pour voir si c'est ca tu mets parent2 ou ce que tu veux

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Autre possibiliété : un problème dans l'interprétation de $r par PHP. Pour voir ça, il faut faire un echo de la requête, et nous la donner en retour...
    ced Il semble que ça soit une bonne piste : on dirait que ça passe avec phpMyAdmin…

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Oui, oui effectivement vous aviez bien vus : ça passe avec phpMyAdmin
    mais en ligne j'ai :
    Parse error: syntax error, unexpected T_STRING in /home.26/v/e/u/veulette/www/blog.php on line 23

  18. #18
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 031
    Points : 23 763
    Points
    23 763
    Par défaut
    Ben oui, c'est parce que Parent est aussi ramené par la sélection de b.*.
    Il faut renommer la colonne du CASE en Parent2, par exemple.

    Montre-nous ce que donne le echo de la requête.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    OK vos 2 requêtes fonctionnent bien l'une et l'autre en ligne
    Le syntax error était de mon fait (désolé)

    SELECT * FROM ( SELECT b.*, f.Nom, f.Prenom, CASE WHEN b.Parent IS NULL then b.ID ELSE b.Parent END AS Parent2 FROM resa_blog b, resa_famille f WHERE b.Rubrique = 'Truc' AND b.Auteur = f.Membre AND b.Annulation IS NULL ) AS T ORDER BY date DESC
    Merci à vous…

  20. #20
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    De rien et bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Qu'est ce qui ne va pas dans ma requête ???
    Par Higestromm dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/09/2018, 21h50
  2. [MySQL] Qu'est ce qui ne va pas dans ma requête ?!
    Par maxence64 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/06/2011, 10h24
  3. qu'est ce qui ne va pas avec cette procédure ?
    Par Jcpan dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 19/01/2009, 09h39
  4. qu'est ce qui ne va pas avec cette requête
    Par fk04 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/08/2006, 09h01
  5. sql-serveur : qu'est-ce qui ne va pas dans cette requête ?
    Par isachat666 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/06/2006, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo