OVH Community, votre nouvel espace communautaire.

Petit problème de left join en sql


Casa
13/03/2004, 12h40
En fait le problème vient du fait que d'un coté on a un enregistrement de l'autre pas et qu'on pose une condition sur un enregistrement qui n'existe peut-être pas.
après avoir tatonné, j'en ai déduit qu'il fallait donc sur celle-ci une clause where conditionnelle :

SELECT f.files_id, f.files_url, f.products_id, pd.products_name
FROM files
LEFT JOIN pd ON f.products_id = pd.products_id
WHERE (
IF ( f.products_id = 0 or f.products_id is null, 1=1, pd.language_id =5 ) )
ORDER BY pd.products_name

et l'on peut cumuler à loisir plusiurs clauses conditionnelles que ce soit dans le WHERE mais aussi dans les clauses ON (qui sont équivalentes)

grddam
13/03/2004, 08h52
tu as essayé d'inverser les 2 tables dans le From :

select f.files_id, f.products_id, p.products_name
from tblProducts p left join tblFiles f on (p.products_id = f.products_id)
where product_language = '5'
order by p.products_name

?

Casa
12/03/2004, 21h52
Bonjour,

j'ai un petit problème de liaison avec deux tables attachées :

soit la table des fichiers tblFiles
files_id (int)unsigned autoincrement
product_id (int) default null
files_name not null
files_language not null

et la table des produits tblProducts
product_id (int) unsigned autoincrement
product_name not null
product_language not null

certains fichiers n'ont pas de relation avec un produit tblFiles.product_id est dans ce cas là mis par mysql à 0 ou à NULL je ne sais)

je veux sortir tous les fichiers (même ceux dont product_id = 0 ou NULL) classés par ordre de product_name (auquel cas si product_id = 0 ou NULL ces fichiers devraient sortir en premier) dont le language = 5

je fais:
select f.files_id, f.products_id, p.products_name
from tblFiles f left join tblProducts p on (p.products_id = f.products_id)
where product_language = '5'
order by p.products_name

et bien ça marche pas je n'ai que les fichiers pour lesquels products_id != 0.

or j'ai absolument besoin : de tous les fichiers, de trier par ordre de produit et que les noms de produits soient en langue 5

une solution ? merci d'avance.