JeuWeb - Crée ton jeu par navigateur
[Résolu][SQL] Colonne inconnue dans la clause ON - 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 : [Résolu][SQL] Colonne inconnue dans la clause ON (/showthread.php?tid=3165)



[Résolu][SQL] Colonne inconnue dans la clause ON - Plume - 12-10-2008

Plop !

Là, je sèche sur une requête SQL avec une jointure Smile

Ma requête :
Code PHP :
<?php 
SELECT
warehouses
.id AS warehouse_id,
warehouses.capacityMech,
warehouses.capacityWeight,
warehouses.countries_id,
player_has_warehouse.name AS warehouse_name,
countries.name AS country_name
FROM
warehouses
,
player_has_warehouse
JOIN countries
ON warehouses
.countries_id = countries.id
WHERE player_has_warehouse
.players_id = 6
AND player_has_warehouse.warehouses_id = warehouses.id;

Mon erreur :
Code :
Unknown column 'warehouses.countries_id' in 'on clause'

Je sais ce que veut dire cette erreur mais je ne comprends pas pourquoi il me la donne. Remarquez quand même qu'il ne gueule pas pour ce qui est de la connaitre dans la clause SELECT.

Quelqu'un sait comment j'me suis planté et arranger ma connerie ?

Merci ;]

En question bonus, j'ai ces deux requêtes :
Code PHP :
<?php 
SELECT
subject
,
content,
from_id,
name,
firstname
FROM mail
JOIN players
ON mail
.from_id = players.id
WHERE
(from_id = $this->playerSess['id'] OR to_id = $this->playerSess['id'])
AND
mail.id = $idMail

Code PHP :
<?php 
SELECT
mail
.to_id,
players.name,
players.firstname
FROM mail
JOIN players
ON mail
.to_id = players.id
WHERE
(mail.from_id = $this->playerSess['id'] OR mail.to_id = $this->playerSess['id'])
AND
mail.id = $idMail;

Sachant que la deuxième requête me sert pour récupérer les données du bonhomme qui réceptionne. Ma question est : Comment récupérer ces même données à l'aide d'une seule requête ?

Si vous avez besoin de voir la structure de la BdD, vous pouvez la retrouver ici : http://creajeu{point car lien mort}net/sqldesigner/index.php?keyword=exotech-alpha-0.12

Merci pour le coup de main !

@tchaOo°


RE: Help on JOINture - pascal - 12-10-2008

yo,

quoi de neuf depuis le temps ?

je crois que l'ordre des tables n'est pas bon :
Code PHP :
<?php 
SELECT
warehouses
.id AS warehouse_id,
warehouses.capacityMech,
warehouses.capacityWeight,
warehouses.countries_id,
player_has_warehouse.name AS warehouse_name,
countries.name AS country_name
FROM
player_has_warehouse
,
warehouses
JOIN countries
ON warehouses
.countries_id = countries.id
WHERE player_has_warehouse
.players_id = 6
AND player_has_warehouse.warehouses_id = warehouses.id;

les 2 premières tables ne sont pas dans le bon ordre: avant la jointure se faisait sur la table player_has_warehouse au lieu de warehouses.

pour les mails, comment avoir l'envoyeur et le destinataire en une seule requête ? avec des alias sur les noms de tables, pour nommer le rôle envoyeur ou destinataire.

Code PHP :
<?php 
SELECT
subject
,
content,
from_id,
envoyeur.name,
envoyeur.firstname,
to_id
destinataire
.name,
destinataire.firstname

FROM mail
JOIN players envoyeur
ON mail
.from_id = players.id
JOIN players destinataire
ON mail
.to_id = destinataire.id
WHERE
(from_id = $this->playerSess['id'] OR to_id = $this->playerSess['id'])
AND
mail.id = $idMail

et voilà Smile

A+

Pascal


RE: Help on JOINture - Plume - 12-10-2008

Pfiou ! Excellent !

J'te remercie, n'avait besoin d'un rafraichissement !

J'y retourne ! Ca va roxer :-°

@tchaOo°