Sql select 1 from
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Sql select 1 from



  1. #1
    harominc

    Sql select 1 from


    ------

    Bonjour

    J'aimerais savoir à quoi sert la requête du type select 1 from[...].

    Merci

    -----

  2. #2
    Bluedeep

    Re : Sql select 1 from

    Bonjour

    Cette requête retournera une seule colonne contenant la valeur 1 et autant de lignes qu' il y a dans la sélection.

  3. #3
    harominc

    Re : Sql select 1 from

    Une colonne contenant la valeur une ? Cad la première colonne ?

  4. #4
    Ikhar84
    Animateur Informatique

    Re : Sql select 1 from

    Non pas la première colonne (première de quoi ?).
    Une colonne "virtuelle", qui n'existe pas dans la base mais qui est "générée" par la requête.
    On peut aussi la nommer par commodité:
    Code:
    SELECT 1 AS nom_colonne WHERE ...
    Pour répondre a la question, cette requête ne sert à rien, en l'état en tout cas.
    Elle retournera donc une colonne "virtuelle", peuplée de 1, et un nombre de ligne correspondant aux "réponses" de la clause WHERE...

  5. A voir en vidéo sur Futura
  6. #5
    Bluedeep

    Re : Sql select 1 from

    Citation Envoyé par Ikhar84 Voir le message
    Pour répondre a la question, cette requête ne sert à rien, en l'état en tout cas.
    .

    Ca a un sens en tant que sous requête corrélée à une autre requête ou pour vérifier l'existence de (au moins) une ligne correspondant à la sélection, et un certain nombres d'autres cas plus ou moins spécifiques.


    En pratique, des cas où il est plus intéressant de ramener N lignes plutôt que la valeur d'un COUNT(*).


    Par ailleurs, si les index et les colonnes de la clause where se recouvrent bien, ca permet de faire un test très rapide par simple lecture de l'index sans avoir à lire les données de la table (si l'optimiseur fait son boulot correctement).

  7. #6
    Ikhar84
    Animateur Informatique

    Re : Sql select 1 from

    Bien entendu !
    Voilà pourquoi je précisais "l'état".

    Le cas type dans lequel on l'utilise est en tant que sous-requête pour ne pas avoir à "rapatrier" un tas de données tout en obtenant le nombre de ligne correspondant à la clause WHERE, comme tu l'as bien précisé, contraitement à COUNT() qui ne retourne qu'une valeur, mais qui, de plus, parcourt toutes les données des enregistrement, ce qui explique le gain en fonction de l'optimiseur (enfin c'est ce que je comprends...).

  8. #7
    harominc

    Re : Sql select 1 from

    D'accord je comprend. Juste par curiosité, comment fait on pour afficher le resultat de la requete (la colonne virtuelle) si on ne lui donne pas de nom avec AS? J'ai fais un test mais je n'ai eu aucun résultat avec $reponse=$bdd->query ('SELECT 1 AS colonne FROM jeux WHEN 1=1') et ensuite j'affiche avec $donnees=$reponse->fetch ())


    Merci pour votre aide

  9. #8
    Ikhar84
    Animateur Informatique

    Re : Sql select 1 from

    Bonsoir,

    Là tu n'affiche rien du tout.

    Pour afficher les réponses, qui sont retournées sous forme de tableau, il faut parcourir le tableau et en afficher les élements un par un.

    Code:
    $i = 1;
    
    while ($row = mysql_fetch_array($reponse,MYSQL_NUM)) {
        printf("%d : %s",$i, $row[0]);
        $i++;
    }
    Ou quelquechose dans le genre .... PHP c'est assez loin pour moi...
    Dernière modification par Ikhar84 ; 30/06/2017 à 20h14.

  10. #9
    harominc

    Re : Sql select 1 from

    oui je sais je n'avais pas mis tout le code dans mon message. En fait ca fonctionnait pas parce que j'ai ecrit : $reponse = $bdd->query('SELECT 1 FROM jeux WHEN 1=1');.
    C'est le 1=1 qui créer l'erreur suivante :
    Fatal error: Uncaught Error: Call to a member function fetch() on boolean in C:\MAMP\htdocs\blindinjection. php:26 Stack trace: #0 {main} thrown in C:\MAMP\htdocs\blindinjection. php on line 26. Pourquoi ca ne marche pas avec la condition?

    Voila tout le code:

    $reponse = $bdd->query('SELECT 1 AS colonne FROM jeux WHEN 1=1');

    while ($donnees = $reponse->fetch())
    {
    echo ('<p>' . $donnees['colonne']);
    }
    Dernière modification par harominc ; 30/06/2017 à 22h43.

  11. #10
    harominc

    Re : Sql select 1 from

    l'erreur détaillée:
    Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 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 'WHEN 1=1' at line 1 in C:\MAMP\htdocs\test.php:23 Stack trace: #0 C:\MAMP\htdocs\test.php(23): PDO->query('SELECT * FROM j...') #1 {main} thrown in C:\MAMP\htdocs\test.php on line 23

  12. #11
    Chanur

    Re : Sql select 1 from

    "When" ?
    Ça devrait pas être "where" ?
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  13. #12
    harominc

    Re : Sql select 1 from

    oui merci en fait lerreur est toute bete j'ai écrit WHEN au lieu de WHERE, (fatigue dsl). Du coup ca fonctionne, comme vous me lavez expliqué. Je me demande quand même comment faire, dans le cas ou on n'utilise pas l’opérateur AS, pour afficher la colonne virtuelle vu qu'on ne connait pas son nom.

  14. #13
    Ikhar84
    Animateur Informatique

    Re : Sql select 1 from

    Bien vu Chanur !

    J'étais concentré sur le 1=1 et les tentatives de notre ami à comprendre les injections SQL.
    Et franchement je me demandais jusqu'où on pouvait l'aider...

    @Harominc: lorsqu'une requête pose problème on la simplifie et on en expurge l'inutile, ici la requête se simplifie en:
    Code:
    SELECT 1 FROM jeux;
    La requête aurait ainsi parfaitement fonctionné

  15. #14
    harominc

    Re : Sql select 1 from

    merci pour votre aide jai eu toutes les reponses a mes questions

Discussions similaires

  1. Slave select SPI
    Par memo1402 dans le forum Électronique
    Réponses: 4
    Dernier message: 05/10/2014, 19h47
  2. problème select()
    Par playboard dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 21/05/2013, 14h34
  3. problème avec select() en c
    Par invite6ae216d1 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 17/08/2011, 06h58
  4. block select bit
    Par invite91a552e4 dans le forum Électronique
    Réponses: 7
    Dernier message: 14/06/2010, 17h28
  5. [Brun] télécommande select 5 bc-9950
    Par invite3c90a0e8 dans le forum Dépannage
    Réponses: 0
    Dernier message: 26/02/2007, 11h48