par
Didjo » 22 déc. 2010, 20:18
Bonjour,
Nouveaux petit soucis avec une requête...
Deux tables
products [
id,
cat,
name-fr,
hidden, et d'autres...], table de produits avec diverses infos
homeslider-blocs [
id-bloc,
fk-id,
display,
position,
diff-img, etc...], table de différents blocs (d'un slider), rattachés à des produits a priori existants dans
product.
Pour afficher mon slider, j'utilise donc un JOIN qui récupère les infos que je veux des deux tables. Parfait.
Mais dans mon back-office, j'utilise une requête semblable (JOIN), qui me liste tous les éléments de
homeslider-blocs :
SELECT s.`id-bloc`, s.`fk-id`, p.`id`, s.`display`, s.`position`, s.`diff-img`, s.`alt-desc-fr`, s.`alt-desc-en`, s.`alt-desc-ru`, p.`cat`, p.`name-fr`, p.`hidden` FROM `homeslider-blocs` s JOIN `products` p ON s.`fk-id` = p.`id` ORDER BY s.`position` ASC
Jusqu'ici aucun problème.
Si l'on supprime un produit depuis le back-office, celui-ci cherche également dans
homeslider-blocs et change la valeur de
fk-id pour "-1" si un bloc était associé au produit à supprimer. Je ne veux pas simplement supprimé la ligne du bloc associé, mais bien le gardé en tant que bloc n'étant plus associé à aucun produit.
Sauf que ma requête JOIN ignore, du coup, ce bloc donc la
fk-id n'est associable à aucun produit !
Comment puis-je faire pour garder exactement le même résultat que cette requête (à savoir lister les lignes de
homeslider-blocs et récupérer les infos des produits correspondant à
fk-id), ET lister également les lignes donc la
fk-id n'est pas associables (avec des valeurs vides pour
p.`name-fr` par exemple, du moment que c'est en une seule requête) ?
Merci !

Bonjour,
Nouveaux petit soucis avec une requête...
Deux tables
[b]products[/b] [[i]id[/i], [i]cat[/i], [i]name-fr[/i], [i]hidden[/i], et d'autres...], table de produits avec diverses infos
[b]homeslider-blocs[/b] [[i]id-bloc[/i], [i]fk-id[/i], [i]display[/i], [i]position[/i], [i]diff-img[/i], etc...], table de différents blocs (d'un slider), rattachés à des produits a priori existants dans [b]product[/b].
Pour afficher mon slider, j'utilise donc un JOIN qui récupère les infos que je veux des deux tables. Parfait.
Mais dans mon back-office, j'utilise une requête semblable (JOIN), qui me liste tous les éléments de [b]homeslider-blocs[/b] :
[sql]SELECT s.`id-bloc`, s.`fk-id`, p.`id`, s.`display`, s.`position`, s.`diff-img`, s.`alt-desc-fr`, s.`alt-desc-en`, s.`alt-desc-ru`, p.`cat`, p.`name-fr`, p.`hidden` FROM `homeslider-blocs` s JOIN `products` p ON s.`fk-id` = p.`id` ORDER BY s.`position` ASC[/sql]
Jusqu'ici aucun problème.
Si l'on supprime un produit depuis le back-office, celui-ci cherche également dans [b]homeslider-blocs[/b] et change la valeur de [i]fk-id[/i] pour "-1" si un bloc était associé au produit à supprimer. Je ne veux pas simplement supprimé la ligne du bloc associé, mais bien le gardé en tant que bloc n'étant plus associé à aucun produit.
Sauf que ma requête JOIN ignore, du coup, ce bloc donc la [i]fk-id[/i] n'est associable à aucun produit !
Comment puis-je faire pour garder exactement le même résultat que cette requête (à savoir lister les lignes de [b]homeslider-blocs[/b] et récupérer les infos des produits correspondant à [i]fk-id[/i]), ET lister également les lignes donc la [i]fk-id[/i] n'est pas associables (avec des valeurs vides pour [i]p.`name-fr`[/i] par exemple, du moment que c'est en une seule requête) ?
Merci ! :merci: