[Resolu] SQL: SELECT sur entrée inexistante - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Resolu] SQL: SELECT sur entrée inexistante (/showthread.php?tid=6650) |
[Resolu] SQL: SELECT sur entrée inexistante - zneman - 17-02-2013 Bien le bonsoir ! Me revoilà avec mes petits problèmes de requêtes sur des entrée BDD qui n'existent (peut être) PAS ! Vous vous souvenez de mon précédent topic sur le "comment faire un INSERT quand on ne trouve pas de ligne à UPDATE) ? http://www.jeuweb.org/showthread.php?tid=9099 Aujourd'hui le problème est: Comment faire une recherche sur une entrée qui n'existe peut être pas ! Imaginons que dans ma BDD, le joueur possède les paysans de type 1 (paysans1) et de type 2 (paysans2), et que j'ai besoin de rechercher tous les paysans qu'il possède ! A savoir: paysans1, paysans2, paysans3 et paysans4 ! Sauf que là, et bien il n'en possède que 2 sur les 4 types ! Deux entrées dans la BDD qui sont inexistantes donc. Une requête qui ne va donc chercher (en plus d'autres choses) les deux premiers types de paysans: fonctionne donc:
Mais une requête qui va chercher tous les types:
Ne fonctionne pas ! Citation :MySQL a retourné un résultat vide (aucune ligne). Ce que je cherche donc à faire, c'est que cela fonctionne (sans blague ). Si possible, en remplaçant donc les données de "paysans3" et "paysans4" par "0" vu qu'il n'y en a pas ! Bref, je me casse la tête depuis quelques heures là dessus et aucun de mes amis (y compris google) n'a réussi à me donner une réponse... Merci donc d'avance si vous connaissez cette dernière ! RE: SQL: SELECT sur entrée inexistante - Ter Rowan - 17-02-2013 Aucun left join a faire Un IN a utiliser Par contre faudrait revoir completement tes notions de sql RE: SQL: SELECT sur entrée inexistante - Sephi-Chan - 17-02-2013 Il faudrait que tu nous décrives tes tables. RE: SQL: SELECT sur entrée inexistante - zneman - 17-02-2013 Rowan: Tant que cela ? Cela fait deux années que je n'ai pas codé, la reprise n'est pas facile ! ^^ Sephi: t_joueur: contient l'id du joueur (PK_joueur) ainsi que des infos comme les galds etc... t_batiment: contient les bâtiments des joueurs: PK_batiment / FK_joueur / FK_cBatiment (qui est le type du bâtiment) / nombre (contient le nombre de bâtiments que possède le joueur s'il peut en avoir plusieurs) t_troupe: contient les troupes des joueurs: PK_troupe / FK_joueur / FK_cTroupe (qui est le type de la troupe) / nombre (comme ci-dessus) / type (0,1) si la troupe est en attaque ou non En gros: t_joueur: PK_joueur | galds | ... ----9-----| 10 000 | t_batiment: PK_batiment | FK_joueur | FK_cBatiment | nombre -----1------|----9------|------2-------|--10---- t_troupe: PK_troupe | FK_joueur | FK_cTroupe | nombre -----1----|----9------|-----1------|---10--- -----2----|----9------|-----2------|---55--- On peut donc voir ici que je n'ai que la troupe de type 1 et de type 2 dans ma table t_troupe. Pour que ma requète avec paysans1, paysans2, paysans3, paysans4 fonctionne il aurait fallu que j'ai: t_troupe: PK_troupe | FK_joueur | FK_cTroupe | nombre -----1----|----9------|-----1------|---10--- -----2----|----9------|-----2------|---55--- -----3----|----9------|-----3------|---5---- -----3----|----9------|-----4------|---30--- Je ne sais pas si j'explique bien mon problème ! Edit: trouvé (si ça peut aider du monde) Code : SELECT j.galds, b.nombre AS maisons, COALESCE(t.nombre, 0 ) AS paysans1, COALESCE(t2.nombre, 0 ) AS paysans2, COALESCE(t3.nombre, 0 ) AS paysans3, COALESCE(t4.nombre, 0 ) AS paysans4 RE: [Resolu] SQL: SELECT sur entrée inexistante - Ter Rowan - 17-02-2013 Meme sans le in ca le fait en fait Tu ne dois pas ramener tes paysans en colonne mais en ligne Et coté php, tu fetch tes résultats |