2010-05-28 6 views
2

J'ai trois tables mysql, contient d'abord des informations sur les articles (ID article, auteur, titre et contenu), les deuxièmes tables contient des informations sur les utilisateurs enregistrés sur mon site (ID , nom, mot de passe, email), le troisième contient des informations sur les catégories (identifiant, nom).Obtenir le nom de l'auteur et nom de la catégorie d'autres tables par ID

Je dois obtenir tous les articles et affiche le titre, le nom de l'auteur et le nom de la catégorie, mais la table article contient des informations uniquement sur les identifiants d'auteur et de catégorie, pas de nom.

Je sais comment obtenir tous les articles de la table des articles mais comment obtenir les noms des auteurs et des catégories d'autres tables en même temps pour afficher le titre de l'article?

J'espère que je suis clair.

Voici un code que j'utilise pour afficher les titres d'article:

$q = mysql_query("SELECT * FROM articles ORDER BY ID DESC"); 

if(!$q) die(mysql_error()); 

while($article = mysql_fetch_object($q)) { 

echo '<div class="article">'; 
echo $article->title . '</a>'; 
echo '<p class="details">Author:' . $article->author_ID . '.</p>'; 
echo '</div>'; 
} 

Comme vous devinez l'affichage variable article- de $> ID auteur ID mais je veux afficher au lieu nom, qui est conservé dans le tableau des auteurs. Idem pour les catégories ...

Quelqu'un peut-il aider s'il vous plaît?

Merci d'avance.

Répondre

1

@Tommy a raison, vous devez utiliser JOINS, voici quelque chose pour vous lancer.
En supposant que vos trois tableaux sont appelés « articles », « utilisateurs » et « catégories »:

SELECT articles.title, users.name, categories.name FROM articles 
JOIN users ON users.id=articles.author_id 
JOIN categories ON categories.id=articles.category_id 
ORDER BY ID DESC 

Maintenant, je suis juste deviner vos noms de table et sur le terrain bien sûr.
Sur la première ligne, j'appelle les champs obligatoires comme si tablename.field
Je JOINTES le utilisateurs table pour les articles table où id d'un utilisateur dans les utilisateurs table doit être égale à la AUTHOR_ID est dans le articles tableau.
Ensuite, de la même je me suis joint à la catégories tableau précisant que catégorie id 's dans les catégories table sont égales à la category_id' s dans les articles de table.
Après cela, vous pouvez avoir une clause WHERE pour affiner votre sélection, ou tout simplement aller directement à la commande ORDER BY puisque vous cherchez à les saisir tous.

2

Vous devez JOINDRE les autres tableaux pour obtenir cette information. S'il vous plaît voir ici pour plus d'informations sur SQL Joins. Si vous n'avez jamais utilisé de jointures auparavant, recherchez d'autres exemples sur la façon de faire des jointures simples et complexes entre des tables. Une fois que vous rejoignez vos tables, toutes les données que vous demandez seront disponibles.

+0

Comment joindre trois tables? :) –

Questions connexes