8768 sujets

Développement web côté serveur, CMS

Bonjour!

Je cherche à faire une sélection sur plusieurs tables de ma BDD, mais je n'arrive pas au résultat souhaité.

Voici ma requête SQL:
$req = 'SELECT DISTINCT
		P.produits,
		C.fr
	FROM produits P
		LEFT JOIN categories C ON P.id_categories = C.id
		LEFT JOIN software S ON S.id_produits = P.id
		LEFT JOIN manual_produits MP ON MP.id_produits = P.id
		LEFT JOIN produits_trouble_produit PTP ON PTP.id_produits = P.id
	WHERE S.statue = "actif"
	ORDER BY C.ordreSupport, P.produits';


Je doit sortir la liste des produits que contiennent les tables software, manual_produits et produits_trouble_produit.
categories, sert au classement.
Ppur l'instant je n’obtiens de résultat que pour software. Il faut combiner avec les 2 autres.

Pouvez-vous m'aider? D'avance, merci
Modifié par juliesunset (12 May 2016 - 17:35)
Bonjour,

A première vue je dirais que c'est le where qui pourrait poser un problème avec les différents left join.

je tenterais ceci (sous toute réserve, je n'ai pas les tables sous la main pour tester) :


$req = 'SELECT DISTINCT
		P.produits,
		C.fr
	FROM produits P
		LEFT JOIN categories C ON P.id_categories = C.id
		LEFT JOIN (select * from software WHERE S.statue = "actif") S ON P.id = S.id_produits
		LEFT JOIN manual_produits MP ON P.id = MP.id_produits
		LEFT JOIN produits_trouble_produit PTP ON P.id = PTP.id_produits
	ORDER BY C.ordreSupport, P.produits';
Non, ça ne fonctionne pas. Rien ne s'affiche.


Voici ce que j'ai trouvé qui se rapproche le plus du résultat souhaité
$req = 'SELECT DISTINCT P.produits, C.fr
	FROM (SELECT id_produits FROM manual_produits
		UNION ALL
		SELECT id_produits FROM produits_trouble_produit) B
		LEFT JOIN produits P ON B.id_produits = P.id
		LEFT JOIN categories C ON P.id_categories = C.id
		LEFT JOIN manual_produits MP ON MP.id_produits = B.id_produits
		LEFT JOIN produits_trouble_produit PTP ON PTP.id_produits = P.id
	GROUP BY P.produits
	ORDER BY C.ordreSupport, P.produits';


J'ai dù mettre de côté la table software. On dirait que la requête ne va chercher les résultats que d'une seule table...