Requete sql et fonction SELECT DISTINCT
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Requete sql et fonction SELECT DISTINCT



  1. #1
    inviteb087c8ff

    Requete sql et fonction SELECT DISTINCT


    ------

    Bonjour à tous,
    Je sollicite vos savoir pour tenter de résoudre une requête sql ma foie assez simple mais mes connaissance sont insuffisantes.

    Dans le code suivant, je n'arrive pas à afficher mes articles comme je le voudrais soit :

    J'aimerais afficher dans l'ordre

    products_id (sans doublons) ; products_name (sans doublons) ; products_price (avec les doublons)

    Où fais-je une erreur ? J'ai bien les id distincts, mais tous les noms sont identiques.

    D'autre part, j'aimerais faire un affichage de tout mon catalogue (environ 4 000 lignes) mais je suis obligé de limiter la requête, y'a-il un moyen pour afficher la totalité ?

    <?php

    $sql = '
    SELECT DISTINCT products_price,products_name,p roducts.products_id
    FROM products_description,products
    LIMIT 50
    ';

    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

    echo "<table>";
    while ($data = mysql_fetch_array($req))

    {

    echo ''.$data[products_id].';'.$data[products_name].'';'.$data[products_price].'<br>';






    }
    echo "</table>";

    mysql_free_result ($req);

    mysql_close ();

    ?>
    Par avance je vous remercie de votre aide,
    Alesque

    -----

  2. #2
    danyvio

    Re : Requete sql et fonction SELECT DISTINCT

    Si les triplets obtenus {products_price,products_name, p roducts.products_id} sont tous différents, la cause DISTINCT a bien fonctionné.
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  3. #3
    inviteb087c8ff

    Re : Requete sql et fonction SELECT DISTINCT

    Merci pour cette réponse, effectivement, il y a des choses qui fonctionnent, mais pas tout à fait comme je voudrais.

    J'explique le contexte : je ne connais pratiquement rien en sql, et pour le peu que j'ai à faire, j'hésite à me lancer dans des études de programmation. Je ne suis pas certain que ça vaille le coup non plus de faire appel à un pro, non pas que je suis radin, mais juste parce que pour si peu, il risque de m'envoyer paitre.

    C'est pourquoi j'essaye de le faire moi-même, avec éventuellement l'aide de certains pour qui ce n'est pas un secret.

    Mon problème dans ce cas : j'arrive à afficher les ID tous différents, mais les noms qui devraient correspondre, sont tous pareils. les prix, eux correspondent bien à l'ID.

    Voilà, merci, je tente tout de même de mon coté en changeant des trucs, un peu au hasard, si je trouve, je fermerai ce sujet.

    Alesque

  4. #4
    MANTA..

    Re : Requete sql et fonction SELECT DISTINCT

    il faudrait enlever le distinct et mettre un groupby à la place (group by products_price,products_name,p roducts.products_id), mais je ne sais pas comment limiter le nombre de ligne après un group By

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

    Re : Requete sql et fonction SELECT DISTINCT

    Pour la requête jointe, la clause GROUP BY n'est pas utile , puisqu'il n'y a pas d'aggrégation (SUM, COUNT etc).

    La requête me semble correcte, mais la base contient-elle ce à quoi le demandeur s'attend ? Des _id distincts correspondent-ils bien à des noms distincts ?
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  7. #6
    vost

    Re : Requete sql et fonction SELECT DISTINCT

    Bonsoir,

    A mon avis la requête n'est pas correcte : elle porte sur deux tables mais il n'y a pas de jointure ! (clause WHERE ou JOIN selon le type de BDD)
    Il faut rajouter quelque chose comme "WHERE products.product_id=products_d escription.product_id"

    Effectivement le GROUP BY n'est pas utile, ni même le DISTINCT probablement... par contre un ORDER BY peut aider

    Pour la limite du nombre de lignes... à quoi est due la limitation ?

  8. #7
    inviteb087c8ff

    Re : Requete sql et fonction SELECT DISTINCT

    Bonjour et merci pour ces réponses, j'en apprends beaucoup et j'avance.

    J'ai réussi à afficher ce que je voulais, comme je voulais dans une page html, c'est génial, il me reste juste un détail, les doublons.

    Mes articles sont déclinés en quatre langues dans ma base de donnée, aussi, j'ai quatre résultats différents pour la même "id" et même produit.

    Comment indiquer que je ne souhaite qu'une fois l'id (dans la langue de mon choix si c'est possible !?)

    Je teste encore des choses, mais déjà c'est beaucoup mieux pour moi.

    Voici le code tel qu'il est maintenant :
    <?php

    $sql = 'SELECT DISTINCT
    products.products_id,
    products_description.products_ name,
    products.products_model,
    products_description.products_ description,
    manufacturers.manufacturers_id
    FROM manufacturers
    INNER JOIN products ON products.manufacturers_id = manufacturers.manufacturers_id
    INNER JOIN products_description ON products.products_id = products_description.products_ id
    ORDER BY products_name ASC'
    ;

    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

    echo "<table>";
    while ($data = mysql_fetch_array($req)) {

    echo '<tr><td><b>ID</b> : '.$data[products_id].'</td>';

    echo '<td>'.$data[products_name].'</td>';
    echo '<td><b>Ref.</b> : '.$data[products_model].'</td></tr>';

    }
    echo "</table>";

    mysql_free_result ($req);

    mysql_close ();

    ?>
    Merci à tous !

  9. #8
    vost

    Re : Requete sql et fonction SELECT DISTINCT

    Bonsoir,

    Il s'agit juste de restreindre ton affichage à une seule langue.

    Si on suppose que tu as une description par language et que c'est ça qui te fait afficher 4 lignes par produit, il s'agit simplement d'ajouter juste avant le ORDER BY quelque chose du genre :
    Code:
    WHERE products_description.language='FR'
    Je pense toujours que le mot clé "DISTINCT" n'est pas nécessaire ici.

    @+

  10. #9
    inviteb087c8ff

    Re : Requete sql et fonction SELECT DISTINCT

    Merci, il fallait effectivement chercher du coté de WHERE

    j'ai ajouté products_description.language_ id, dans SELECT (en supprimant le DISTINCT apparemment inutile)
    et WHERE products_description.language_ id = "4"
    ça fonctionne parfaitement !

    Je sais pas si j'ose... Bon si quelqu'un sait comment supprimer les accents dans le résultat qui s'affiche (echo '<td>'.$data[products_name].'</td>'
    ou peut-être dans la partie SELECT, ce serait la cerise sur le gâteau.

    Encore un grand merci pour votre aide, vous m'enlevez une baguette chinoise du pied !

  11. #10
    vost

    Re : Requete sql et fonction SELECT DISTINCT

    Salut,

    Le problème est-il de supprimer les accents ou de les afficher correctement ?

    Dans le premier cas cherches du côté de la fonction php preg_replace ou str_replace
    Sinon cherches plutôt du côté de la fonction html_entities ou html_special_chars

    Tu trouveras facilement de la doc et des exemples bien faits sur php.net

    @+

  12. #11
    inviteb087c8ff

    Re : Requete sql et fonction SELECT DISTINCT

    Bonjour,

    Je voudrais les supprimer pour pouvoir les intégrer dans un programme Gestion commerciale / compta qui lui, ne les gère pas.

    Je vais donc chercher du coté des fonctions PHP, merci de votre aide.

    Alex.

  13. #12
    vost

    Re : Requete sql et fonction SELECT DISTINCT

    Mouarf... t'es sur qu'il sait compter en euros ton logiciel de compta ?

    Regardes dans les contributions utilisateurs en bas de le manuel de la fonction preg_replace tu as un bon exemple avec str_replace... "remove_accent"

Discussions similaires

  1. sql requete
    Par aminaa dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 13/02/2013, 18h28
  2. comment créer une requête de type SELECT...WHERE avec vba
    Par invite33cb2e4d dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 04/08/2009, 16h26
  3. Problème avec la requete SELECT et UPDATE
    Par invite7e9df035 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 10
    Dernier message: 23/01/2009, 14h07
  4. requête SQL
    Par inviteafd8fc22 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 07/01/2008, 16h02
  5. Requete SQL
    Par invite4a3050ae dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 14/05/2004, 12h57