2011-10-25 3 views
2

J'ai déjà fait des recherches sur ce sujet et toutes mes tentatives ont été jusqu'à présent limitées. J'essaie d'effectuer une requête mysql dans mon script PHP qui traite de plusieurs tables.Comment puis-je interroger 2 tables et plusieurs colonnes?

Voici ce que les tables ressemblent:

TABLEAU 1

Nom

TABLEAU 2

Produit (nom)

Inventaire

CatID

RéfProduit

TABLEAU 3

Product_URL

"nom" (tableau 1) doit être sain comme "produit" (Tableau 2). Ensuite, "Inventaire" (tableau 2) doit être = à "Y". Enfin, "CatID" doit être = "2".

Ma tentative ressemblait un peu à ceci:

SELECT 1.name, 2.Product, 2.Inventory, 2.CatID 
FROM table1 1, table2 2 
WHERE 2.Inventory = 'Y' 
    AND 1.name = 2.Product 
    AND 2.CatID = '2' 

A partir des résultats, je chercherais à obtenir plus d'informations de la table comme la description du produit, etc. qui serait dans le tableau 1 et table2 ... I n'avez jamais joint ou demandé 2 tables (ou plus) auparavant. Toute aide serait grandement appréciée.

+3

Veuillez accepter les réponses à certaines de vos questions précédentes. Vous obtiendrez une aide plus rapide. –

+2

Si 't2.Product = t1.Name' et Name est la seule colonne de t1, vous n'avez pas besoin de JOIN. –

+0

Vous voudrez peut-être lire sur la normalisation de la base de données avant de concevoir votre base de données. Cela vous sauvera beaucoup de maux de tête plus tard. – dqhendricks

Répondre

0

Essayez ceci:

SELECT table1.Name, table2.Product, tabl2.Inventory, table2.CatID 
FROM table1 INNER JOIN table2 
ON table1.Name = table2.Product 
WHERE table2.CatID = '2' 
+0

J'ai essayé cela et même ajouté le "e" manquant dans tabl2.Inventory ... Il ne fonctionne toujours pas. $ query = ("SELECT table1.Nom, table2.Product, table2.Inventory, table2.CatID FROM table1 INNER JOIN table2 ON table1.Name = table2.Product ET table2.CatID = '2' «); while ($ test = mysql_fetch_array ($ query)) { $ echo Test [ 'nom']; } – NotJay

+0

Les CatID = '2' devrait être dans la clause WHERE, pas La requête éditée est une requête valide, mais en supposant que la base de données est correctement configurée et que vous passez avec succès les valeurs du code php, vous obtiendrez peut-être plus de valeurs que vous ne le pensez. la structure des tables et vos clés primaires/étrangères, mais nous aurions besoin de plus d'informations pour savoir que ... –

+0

$ test ['name'] devrait être $ test ['table1.name']; – onatm

0
SELECT t1.name, t2.Product, t2.Inventory, t2.CatID, t2.ProductID 
FROM table1 t1 
INNER JOIN table2 t2 ON t2.Product = t1.name 
WHERE t2.Inventory = 'Y' AND t2.CatID = 2 

Je suis désolé de dire que la base de données que vous avez à travailler avec était très mal conçu. Si la requête que je vous ai envoyée ne fonctionne pas, assurez-vous que les données des tables correspondent bien aux critères que vous recherchez.

Rappelez-vous également que lorsque vous accédez à ces champs en PHP, la capitalisation est importante. Vous devez faire quelque chose comme ceci:

<?php 

$q = QUERY FROM ABOVE 
$r = mysql_query($q); 
while($row = mysql_fetch_assoc($r)) { 
    $name = $row["name"]; 
    $product = $row["Product"]; 
    $inventory = $row["Inventory"]; 
    $catid = $row["CatID"]; 
    $productid = $row["ProductID"]; 
} 

?> 
Questions connexes