2013-08-12 5 views
0

Je dois récupérer l'identifiant d'une table dans une base de données et utiliser cet identifiant comme une "clé" pour obtenir le nom d'une autre table. Par exempleRécupérer des données de la table en utilisant les données récupérées d'une autre table

$result2 = mysql_query("SELECT * FROM XXX WHERE id=8 ") 
or die(mysql_error()); 

while($row = mysql_fetch_array($result2)) { 

echo $row['client_id']; 

Ici j'obtenir la client_id de la table 1. Maintenant, comment puis-je mettre cela dans ce afin qu'il renvoie le nom et le nom seulement de ceux qui ont l'identifiant indiqué ci-

$data = mysql_query("SELECT firstname, lastname FROM YYY WHERE ???? :S ") 
or die(mysql_error()); 
Print "<table border cellpadding=3>"; 
while($info = mysql_fetch_array($data)) 
    { 
    Print "<tr>"; 
    Print "<th>fname:</th> <td>".$info['firstname'] . "</td> "; 
    Print "<th>lname:</th> <td>".$info['lastname'] . " </td></tr>"; 
} 
Print "</table>"; 
?> 
+2

[** S'il vous plaît, ne pas utiliser 'mysql_ *' fonctions du nouveau code **] (http: // bit. ly/phpmsql). Ils ne sont plus maintenus [et sont officiellement obsolètes] (https://wiki.php.net/rfc/mysql_deprecation). Voir la [** boîte rouge **] (http://j.mp/Te9zIL)? En savoir plus sur [* instructions préparées *] (http://j.mp/T9hLWi) à la place, et utiliser [PDO] (http://php.net/pdo) ou [MySQLi] (http://php.net/ mysqli) - [cet article] (http://j.mp/QEx8IB) vous aidera à décider lequel. Si vous choisissez PDO, [voici un bon tutoriel] (http://j.mp/PoWehJ). – j0k

+2

Pourquoi n'utilisez-vous pas rejoindre? http://www.w3schools.com/sql/sql_join.asp – FirmView

+0

a fini par utiliser "$ data = mysql_query (" SELECT nom, nom FROM YYY WHERE id IN (SELECT client_id FROM XXX WHERE id = 8) ")" merci à tous pour vos réponses – LefterisL

Répondre

0

Si vous ne devez prendre le client_id de XXX table, utilisez une sous-requête:

$data = mysql_query("SELECT firstname, lastname FROM YYY WHERE id IN (SELECT client_id FROM XXX WHERE id=8)") . 

Si XXX.id est clé primaire, qui sous-requête retourne juste une ligne, donc au lieu si vous utilisez id IN (SEL...), utilisez id = (SEL...

+0

utilisé ceci, a bien fonctionné. THanks – LefterisL

+0

Si vous avez terminé, fermez cette question en acceptant une réponse :). – ep0

+0

chose sûre, je viens de m'avoir notifié que je devais attendre quelques minutes avant de le faire :) – LefterisL

0

Pourquoi pas:

$data = mysql_query("SELECT firstname, lastname FROM YYY WHERE id ". $row['client_id']) ; 
or die(mysql_error()); 
0

utilisent ce

SELECT firstname, lastname FROM YYY WHERE id IN (SELECT client_id FROM XXX WHERE id=8) 
0

Juste pour répondre à la question:

$sql = "SELECT firstname, lastname FROM YYY WHERE client_id = ".$row['client_id'].""; 

Mais, comme mentionné, n'utilisez pas mysql_ fun cations, puisqu'elles sont obsolètes et seront supprimées à l'avenir. Cela signifie que votre code ne sera pas utilisé pendant longtemps si vous continuez à les utiliser.

Aussi, je suppose qu'il serait plus efficace et plus élégant de résoudre ce problème avec MySQL JOIN s. Si vous avez des difficultés à le faire, demandez de l'aide.

Un exemple simple pour une requête avec une jointure est la suivante:

$sql = " 
SELECT 
    yy.firstname, yy.lastname 
FROM xx 
JOIN yy ON yy.client_id = xx.client_id 
WHERE xx.id = ".$yourID." 
"; 
Questions connexes