Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Sql select 1 from

  1. harominc

    Date d'inscription
    octobre 2016
    Messages
    104

    Sql select 1 from

    Bonjour

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

    Merci

    -----

     


    • Publicité



  2. Bluedeep

    Date d'inscription
    décembre 2013
    Localisation
    Isère
    Âge
    56
    Messages
    6 846

    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. harominc

    Date d'inscription
    octobre 2016
    Messages
    104

    Re : Sql select 1 from

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

  4. Ikhar84

    Date d'inscription
    octobre 2016
    Localisation
    Avignon
    Âge
    40
    Messages
    290

    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. Bluedeep

    Date d'inscription
    décembre 2013
    Localisation
    Isère
    Âge
    56
    Messages
    6 846

    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).
     


    • Publicité



  6. Ikhar84

    Date d'inscription
    octobre 2016
    Localisation
    Avignon
    Âge
    40
    Messages
    290

    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...).
     

  7. harominc

    Date d'inscription
    octobre 2016
    Messages
    104

    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
     

  8. Ikhar84

    Date d'inscription
    octobre 2016
    Localisation
    Avignon
    Âge
    40
    Messages
    290

    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 à 21h14.
     

  9. harominc

    Date d'inscription
    octobre 2016
    Messages
    104

    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 à 23h43.
     

  10. harominc

    Date d'inscription
    octobre 2016
    Messages
    104

    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
     

  11. Chanur

    Date d'inscription
    septembre 2011
    Messages
    1 144

    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.
     

  12. harominc

    Date d'inscription
    octobre 2016
    Messages
    104

    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.
     

  13. Ikhar84

    Date d'inscription
    octobre 2016
    Localisation
    Avignon
    Âge
    40
    Messages
    290

    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é
     

  14. harominc

    Date d'inscription
    octobre 2016
    Messages
    104

    Re : Sql select 1 from

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


    • Publicité







Sur le même thème :





 

Discussions similaires

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