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 :

Questionnement syntaxe requête sql


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut Questionnement syntaxe requête sql
    Bonjour,
    Je cherche à mettre en place un affichage page par page en php pour le résultat d'une requête dans une bdd.
    J'ai pris modèle sur un tuto d'un autre site.
    Dans celui-ci il y a une requête sql dont je ne comprends pas la syntaxe (elle fonctionne pourtant bien) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = 'select prenom,surnom FROM vaches ORDER BY prenom ASC limit '.$limite.','.$nombre;
    Ce que je ne comprends pas c'est le ' de début non fermé à la fin et le '.$nombre qui n'a '. qu'à gauche ?
    Quelqu'un pourrait SVP prendre une minute pour m'expliquer ???
    Merci par avance,
    Evelyne31

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    regarde ce que donne la coloration syntaxique ici, tu comprendra mieux ce qui est ouvert et fermé et surtout où

    D’où l'utilité de travailler avec des outils offrant la coloration syntaxique en fonction du langage
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonjour sevyc64,
    et merci pour ce conseil que je retiens. Je travaille avec Fraise sous Mac.
    Je vois ici que '.$limite.','.$nombre; posent problème. Pourtant j'ai testé et cette requête fonctionne.

    J'ai tenté de la modifier pour l'adapter à mon site comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ]$select = afficherD(SQLSelect("
        	SELECT g.numGite, c.nomCommune
        	FROM GITE g
        	JOIN DEPARTEMENT d ON g.ID_departement = d.ID_departement
        	JOIN COMMUNE c ON g.ID_commune = c.ID_commune
        	WHERE nomDepartement = '" . $mot_recherche . "' ORDER BY numGite ASC limit '" . $limite . "', '" . $nombre . "'
         ") );
    et là j'obtiens le message d'erreur suivant :
    Erreur sur la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT g.numGite, c.nomCommune 
    FROM GITE g 
    JOIN DEPARTEMENT d ON g.ID_departement = d.ID_departement 
    JOIN COMMUNE c ON g.ID_commune = c.ID_commune 
    WHERE nomDepartement = 'Haute-Garonne' 
    ORDER BY numGite ASC 
    limit '0', '2'
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0', '2'' at line 5
    Je ne comprends pas. Auriez-vous une piste pour m'orienter ?
    Un grand merci par avance,
    Evelyne31

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    LIMIT s'utilise avec des entiers et non avec des chaînes de caractères.

    Bindez correctement vos paramètres et vous n'aurez plus de problème (problème lié au développement côté appli et non SQL)

  5. #5
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonjour punkoff,
    et merci pour ce conseil. Je mets en résolu.
    Bonne après-midi,
    Evelyne31

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Pourquoi y a t-il à la fois le département et la commune dans la table des gîtes ?

    Tu peux avoir un gîte à Beaumont-sur-Lèze en Aveyron !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Bonjour CinePhil,
    Merci pour ton message. Non bien sûr.
    Dans la table GITE j'ai ID_pays, ID_departement et ID_commune en clés étrangères.
    Le numéro complet d'un gîte est composé de :
    - le code du pays
    - le code du département
    - le code de la commune
    - et un numéro de gîte dans cette commune car il peut en avoir plusieurs.
    Je ne veux plus retourner à la case MERISE !!!!
    Evelyne31

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Donc je complète ma réponse précédente :
    Tu peux avoir un gîte à Beaumont-sur-Lèze en Aveyron !
    ... et en Chine !

    Je ne veux plus retourner à la case MERISE !!!!
    Ben je te souhaite que personne ne vienne tripatouiller les données dans ta BDD !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Il n'est pas rare que plusieurs communes portent exactement le même nom dans des départements différents.

    Personnellement, je ne vois pas de défaut de conception.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  10. #10
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Oups, ce n'est plus vraiment le même sujet, je l'ai mis en résolu trop vite.
    Quand je dis que je ne veux plus retourner à MERISE, je plaisante bien sûr.
    Vous me faîtes douter, voici mon MCD :
    GITE--1,1--être--0,n--PAYS
    GITE--1,1--être1--0,n--DEPARTEMENT
    GITE--1,1--être2--0,n--COMMUNE
    Ce qui donne 3 clés étrangères dans la table GITE ?
    J'espère que c'est OK ?
    Evelyne31

  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si c'est international, le schéma est le suivant :
    ville -1,1----situer----0,n- pays

    Pour prendre en considération le fait qu'une commune française est située en plus dans un département, on ajoute cette association :
    ville -0,1----situer----0,n- departement

    Avec bien sûr une contrainte pour que le pays de la commune située dans un département soit aussi située en France.

    Si on veut prendre en compte d'autres entités administratives intermédiaires entre la ville et le pays, comme elles sont différentes d'un pays à l'autre, la modélisation se complique et ce n'est peut-être pas l'objet ici.

    Toujours est-il que je persiste à dire que le modèle qui consiste à faire figurer dans une table à la fois la ville, le département et le pays (voire pourquoi pas la région, le canton, la communauté de commune, tant qu'on est en France), est une erreur de conception qui peut un jour ou l'autre entraîner des données incohérentes enregistrées en BDD.

    Quant à l'homonymie de certaines communes, elle ne joue pas car chaque commune française est identifiée par l'INSEE selon un code différent. Il y a, par exemple, 4 "Auterive" dont 3 situées en Midi-Pyrénées. Quelle pagaille si on n'enregistre qu'une seule Auterive en BDD ! Il est évident qu'il faut en enregistrer 4, chacune avec un identifiant technique (clé primaire auto-incrémentée) différent et chacune avec son code INSEE différent.
    De plus, une commune peut changer de nom. Châlons-sur-Marne est devenue Châlons en Champagne. C'est vrai aussi à l'étranger : Saint-Pétersbourg => Léningrad => Saint-Pétersbourg.
    Certaines communes en absorbent d'autres : Dans les années 1970, à moins de 5km de chez moi, la commune de Rouelles est devenue un quartier du Havre.

    La gestion des entités géographique est complexe et il faut l'adapter à ses besoins mais il faut quand même éviter de situer Marseille en Turquie ou Istamboul en Ariège !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Evelyne31 Voir le message
    Oups, ce n'est plus vraiment le même sujet, je l'ai mis en résolu trop vite.
    Quand je dis que je ne veux plus retourner à MERISE, je plaisante bien sûr.
    Vous me faîtes douter, voici mon MCD :
    GITE--1,1--être--0,n--PAYS
    GITE--1,1--être1--0,n--DEPARTEMENT
    GITE--1,1--être2--0,n--COMMUNE
    Ce qui donne 3 clés étrangères dans la table GITE ?
    J'espère que c'est OK ?
    Evelyne31
    Non ce n'est pas OK.
    Voir ma réponse précédente.

    De plus l'emploi du verbe être dans le MCD n'est pas judicieux. Un gîte n'est ni un pays, ni un département, ni une commune ! Il est situé dans une commune qui est située dans une commune qui est située dans un département si c'est une commune française.

    Je suppose que tu as voulu faire ainsi car l'utilisateur peut choisir le pays puis le département puis la commune et que tu veux afficher à chaque fois la liste des gîtes disponibles ?
    Tu as mélangé le processus et la modélisation des données.
    Le modèle de données représente le côté statique de celles-ci et l'application ne doit pas influer sur le modèle de données.

    Si tu veux présenter la liste des gîtes disponibles à l'utilisateur dès qu'il choisit le pays, tu peux l'obtenir par une requête avec jointure entre les communes et les pays.
    Si l'utilisateur a choisi la France, tu lui affiches la liste des départements et la liste des gîtes disponibles classés par département (par exemple). Une fois qu'il a choisi le département, la liste se réduit aux gîtes du département.
    C'est du processus mais le modèle de données ne change pas :
    commune -1,1----situer----0,n- pays
    |-0,1----situer----0,n- departement <= seulement pour les commune situées en France

    Tables :
    pays (pay_id, pay_nom...)
    departement (dpt_id, dpt_numero, dpt_nom...)
    commune (cmn_id, cmn_id_pays, cmn_nom...)
    cmn_situer_dpt (csd_id_commune, csd_id_departement)

    Et le gîte associé seulement à la commune :
    gite -1,1----situer----0,n- commune

    gite (git_id, git_id_commune...)

    Le numéro complet d'un gîte est composé de :
    - le code du pays
    - le code du département
    - le code de la commune
    - et un numéro de gîte dans cette commune car il peut en avoir plusieurs.
    Perso, je mettrais une seule colonne pour ce code et j'écrirais une procédure SQL pour générer ce numéro à l'ajout d'un nouveau gîte.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Membre régulier
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 210
    Points : 92
    Points
    92
    Par défaut
    Merci CinePhil pour toutes ces précisions.
    Je vais reprendre mon MCD.
    Ce que tu dis est très intéressant. Il y a de nombreux points de conception que je comprends mieux maintenant que mon projet a avancé.
    Je reprends régulièrement des choses et pour le prochain projet ça ira mieux car j'aurai une idée de la chaîne complète.
    Pour les codes j'ai utilisé la norme en 3 caractères pour les pays et pour les communes le code INSEE.
    Oui, tu as bien vu, on pourra rechercher les gîtes d'un département ou d'une commune. Pas d'un pays, il y aurait trop de réponses.

    Perso, je mettrais une seule colonne pour ce code et j'écrirais une procédure SQL pour générer ce numéro à l'ajout d'un nouveau gîte.
    Je n'y ai pas pensé, ça me semble intéressant mais pour ce qui est d'écrire une prodédure SQL je n'en ai pas du tout le niveau.
    Merci encore, j'étudie tout ce que tu me dis tranquillement.
    Evelyne31

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Syntaxe requête sql en ASP ?
    Par bambino13 dans le forum ASP
    Réponses: 2
    Dernier message: 29/04/2009, 13h48
  2. Syntaxe requête SQL dans JCL MVS pour lire sous AIX
    Par Claire de Morsang dans le forum DB2
    Réponses: 2
    Dernier message: 18/03/2008, 17h14
  3. Problème Syntaxe requête SQL LIKE avec ACCESS
    Par Arnofish dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/12/2007, 11h57
  4. [2000] Syntaxe requête SQL
    Par Gabout dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/11/2007, 11h00
  5. Syntaxe requête SQL
    Par Mvu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/07/2004, 14h27

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