Requête SQL pour sélectionner les produits de toutes les catégories de l'Un des Parents
J'ai une Table Produit avec cette structure
id, title, slug, details, category(FK category.ID)
Et un Tableau des catégories:
id, nom, slug, parent
Catégories ont seulement 1 niveau
Si il n'y a pas de parent alors champ parent est 0 sinon l'id de la catégorie parent enregistré
Supposons que j'ai catégories de structure comme ceci:
FRUITS
|---- APPLE
|---- MANGO
|---- BANANA
- Je utiliser un slug de la Catégorie à la requête des produits d'une catégorie
catégorie.le php?cat=apple
de la catégorie.le php?cat=mangue
1er requête:
select id,name from category WHERE slug='$catslug'
Après l'obtention de l'ID de la catégorie, puis utiliser la requête pour obtenir les résultats de l'IDENTIFIANT de table produits
select * from products where category=$categoryid
Quelle requête est nécessaire si je veux extraire tous les produits affichés dans les FRUITS?
category.php?cat=fruits
Je veux obtenir tous les produits affichés dans la pomme, la mangue, la banane (tous les enfants de fruits)
Seulement l'Id d'enfant sont enregistrés dans la table produits comment puis-je lien parent de la catégorie apple avec ces?
- Combien de niveaux de catégories avez-vous? Jamais plus de 2?
- La colonne parent magasin le parent de l'id ou le nom? La base de données utilisez-vous?
- ont seulement 1 niveau parent-enfant S'catégorie parent alors l'ID est enregistré dans le champ parent de la catégorie table de autre 0 qui est par défaut
- oui id du parent chat enregistré dans le champ parent si aucun parent n'0 DB type InnoDB
Vous devez vous connecter pour publier un commentaire.
Vous pouvez rechercher par catégories liées aux produits pour lesquels la catégorie parent est le fruit de la catégorie à l'aide de plusieurs jointures. Ici
cc
se réfère à la catégorie fille etcp
se réfère à la catégorie parente. Nous récupérer tous les produits ayant un enfant à catégorie égale à la catégorie des produits, et d'avoir une catégorie parent de cet enfant, de la catégorie égale àFRUITS
:Si ce doit être une solution générique qui gère à la fois le parent et l'enfant catégories sans faille, vous pouvez vérifier pour un match, que ce soit au niveau de l' (en supposant que tous les noms de catégories sont uniques, et chaque produit a une catégorie):
select * from products p Inner JOIN users u ON u.id = p.author inner join category cc on cc.id = p.category left join category cp on cp.id = cc.parent where cc.slug = '$catslug' or cp.slug = '$catslug' ORDER BY p.date DESC
mais il ignore dernier enregistrement si le Parent de la catégorie des fruits a 6 dossiers, il montre seulement 5 & passez dernier enregistrement qui est la dernière entrée de l'enfant à partir de produits de la table ! les utilisateurs ajoutés tables de JOINTURE aussi je veux obtenir de la catégorie.nom de la catégorie table de résultat1) Vous n'avez pas besoin d'utiliser deux requêtes, vous pouvez utiliser la rejoindre:
2) Vous pouvez sélectionner tous les produits à base de fruits avec cette requête:
J'ai utilisé de la 2ème requête suggéré par tarmaq
Ses résultats à partir de produits table n'obtenez Pas de Nom de Catégorie, les Détails Catégorie de la catégorie table
J'ai essayé ceci:
résultat: Erreur dans la Requête.
aussi je veux REJOINDRE les utilisateurs de table dans la requête ci-dessus et pour montrer le nom de l'auteur(les utilisateurs.nom) alongwith produit (id de l'auteur enregistrés dans la table produit qui est FK partir de la table des utilisateurs les utilisateurs.id est unique)
Où mettre cette instruction de Jointure dans la requête ci-dessus
MODIFIER - j'ai rejoint l'utilisateur table avec le nom de l'auteur avec cette requête
voulons maintenant récupérer les données à partir de la catégorie table catégorie.nom, catégorie.les détails avec cette requête