Bonjour!

Alors voilà, avant tout deux choses à savoir:
- je suis (mauvais) autodidacte
- j'essaye de modifier un script qu'on m'a fait

Composition des tables:
  • LIEUX (id, coordonnée X, coordonnée Y, nom du lieu)
  • MEMBRES (nom membre, position membre)
  • AMIS (nom ami, position ami)
  • ENNEMIS (nom ennemi, position ennemi)


A noter que les positions des tables membres, amis et ennemis correspondent forcément à un id de la table lieux.

But de la requête:
Sélectionner tous les membres, amis et ennemis dont la position est renseignée et les regrouper par position.
Ensuite cette requête est utilisée pour afficher une image sur une carte sur chaque lieu où se trouve des membres, amis et/ou ennemis. Cette image change en fonction du mélange: membres seuls, membres + amis, membres + ennemis, membres + amis + ennemis, etc...).

Problème:
Pour l'instant le code fonctionne avec les membres et ennemis (code initial qu'on m'a donné), mais quand j'essaye d'ajouter les amis ça ne fonctionne plus.

Code initial:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    $sql_request =
      "SELECT ".
        "`LIEUX`.`id`, ".
        "`LIEUX`.`nom du lieu`, ".
        "`LIEUX`.`coordonnée X`, ".
        "`LIEUX`.`coordonnée Y`, ".
        "COUNT(`MEMBRES`.`nom membre`) AS 'NB_membres', ".
        "COUNT(`ENNEMIS`.`nom ennemi`) AS 'NB_ennemis' ".
      "FROM `MEMBRES ` ".
        "RIGHT OUTER JOIN `LIEUX` ".
          "ON `LIEUX`.`id` = ".
            "`MEMBRES `.`position membre` ".
        "LEFT OUTER JOIN `ENNEMIS` ".
          "ON `LIEUX`.`id` = ".
            "`ENNEMIS`.`position ennemi` ".
      "WHERE `MEMBRES `.`position membre` IS NOT NULL ".
        "OR `ENNEMIS`.`position ennemi` IS NOT NULL ".
      "GROUP BY `LIEUX`.`id` ".
      "ORDER BY `LIEUX`.`id` ASC;";

Avec mes modifications et qui ne fonctionne pas:

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    $sql_request =
      "SELECT ".
        "`LIEUX`.`id`, ".
        "`LIEUX`.`nom du lieu`, ".
        "`LIEUX`.`coordonnée X`, ".
        "`LIEUX`.`coordonnée Y`, ".
        "COUNT(`MEMBRES`.`nom membre`) AS 'NB_membres', ".
        "COUNT(`ENNEMIS`.`nom ennemi`) AS 'NB_ennemis' ".
        "COUNT(`AMIS`.`nom ami`) AS 'NB_amis' ".
      "FROM `MEMBRES ` ".
        "RIGHT OUTER JOIN `LIEUX` ".
          "ON `LIEUX`.`id` = ".
            "`MEMBRES `.`position membre` ".
        "LEFT OUTER JOIN `ENNEMIS` ".
          "ON `LIEUX`.`id` = ".
            "`ENNEMIS`.`position ennemi` ".
        "LEFT OUTER JOIN `AMIS` ".
          "ON `LIEUX`.`id` = ".
            "`AMIS`.`position ami` ".
      "WHERE `MEMBRES `.`position membre` IS NOT NULL ".
        "OR `ENNEMIS`.`position ennemi` IS NOT NULL ".
        "OR `AMIS`.`position ami` IS NOT NULL ".
      "GROUP BY `LIEUX`.`id` ".
      "ORDER BY `LIEUX`.`id` ASC;";

Merci d'avance pour l'aide que vous pourriez m'apporter!

Si vous avez des questions sur des éléments qui pourraient manquer, n'hésitez surtout pas!