Résolu

Jointure avec données multiple [PHP + MySQL]

Hello,


Je n'arrive pas à obtenir le nom dans une de mes tables mais uniquement l'ID si quelqu'un peut me retirer mes oeillères ce serait sympa ;)


$info= $bdd->prepare('
    	SELECT *
    	FROM dbgames_platforms
    	LEFT JOIN dbgames_companies M ON M.company_name = dbgames_platforms.platform_manufacturer_id
    	LEFT JOIN dbgames_companies D ON D.company_name = dbgames_platforms.platform_developer_id
    	WHERE platform_id = ?
    ');
    $info->execute(array($platform));
    $info = $info->fetch();


en l'état le code fonctionne et me renvoi les id suivants :


platform_manufacturer_id
platform_developer_id


sauf que je voudrais avoir le nom et non l'id via company_name :/


voici la structure de ma table :


company_id int(11) Non Aucun(e) AUTO_INCREMENT
company_name varchar(255) utf8mb4_general_ci Oui NULL
company_country_id int(11) Oui NULL
company_manufacturer tinyint(1) Oui NULL
company_developer tinyint(1) Oui NULL


Merci à tous pour votre aide ;)

Cette pub permet au site de vivre ...

9 commentaires

@Kam3leoN, Oh impeccable alors et de rien 😀

C'est bon j'ai résolu mon problème, afin d'éviter la jointure car pour ce cas précis c'est tout simplement impossible sns avoir 15milles tables ;)

Merci pour ta patiente ;)

Ca donne çà :)

https://cdn.discordapp.com/attachments/652598755849142312/681819429524471919/unknown.png

@Kam3leon,


Il faudrait que tu me partages tes tables sql et quelques données sur Discord afin que je teste moi même car de tête c'est compliqué ..


Sauf si tu as déjà réussi .. 😅

oui j'en ai même plein et elle fonctionne toute très bien


c'est bien un boolean mon tinyint(1) c'est phpmyadmin qui le modifie mon BOOLEAN à l'enregistrement.

après pour l'autre table INT est bien un INT aussi puisqu'il recupère un ID


le seul truc que je vois car en l'état ma jointure fonctionne très bien c'est mon double appel de :

dbgames_companies


mais je voulais juste obtenir une aide pour avoir mes 2 infos.

platform_developer_id, platform_manufacturer_id.


si tu vois pas tant pis c'est peut-être pas possible je croyais juste qu'on pouvais tout faire avec PHP ^^



@Kam3leoN,


En l'état ta requête SQL n'est pas correcte .. pour faire une jointure il faut que ça soit :

  • int = int
  • varchar = varchar
  • boolean = boolean


Donc pour moi il faut que tu revois ta table SQL ou la façon dont tu souhaites récupérer les données .. 😅



Tu as déjà fait des JOINTURES SQL ?

@Clouder,


En fait c'est un boolean 0 ou 1

dans compagnies par exemple (nintendo) peut-être développeur et/ou fabricant

mais peut aussi n'être que l'un ou l'autre


je souhaite donc récupérer les 2 valeurs soit 0 soit 1

platform_manufacturer_id = 1 (il est fabricant) ca aurait pu être aussi 0 si il n'avait pas été fabricant.

platform_developer_id = 1 (il est developpeur) ca aurait pu être aussi 0 si il n'avait pas été développeur.

@Kam3leoN


Pour moi tu as un problème ici :


LEFT JOIN dbgames_companies M ON M.company_name = P.platform_manufacturer_id
LEFT JOIN dbgames_companies D ON D.company_name = P.platform_developer_id


Company_name est un varchar et platform_manufacturer est un entier je pense.. donc il faut que tu pointes tes informations entre 2 entiers

Salut @clouder,


bah c'est celle que j'ai mis un peu plus bas dans mon premier message :


company_id int(11) Non Aucun(e) AUTO_INCREMENT
company_name varchar(255) utf8mb4_general_ci Oui NULL
company_country_id int(11) Oui NULL
company_manufacturer tinyint(1) Oui NULL
company_developer tinyint(1) Oui NULL


a moins que tu ne veuilles la dbgames_platforms et dans ce cas la voici ;)


platform_id int(11) Non Aucun(e) AUTO_INCREMENT
platform_developer_id int(11) Oui NULL
platform_manufacturer_id int(11) Oui NULL
platform_name varchar(255) utf8mb4_general_ci


@Kam3leoN,


Tu peux me montrer un extrait de ta table SQL ? Car la ta jointure il y a un vrai problème pour moi ..


Lorsque tu fais une jointure il faut que tu pointes sur le même type


Exemple :


SELECT *
FROM utilisateur U
LEFT JOIN photos P ON P.id_utilisateur = U.id
WHERE U.id = ?
Cette pub permet au site de vivre ...