Update avec condition portant sur deux table
Résolu/Fermé
A voir également:
- Update avec condition portant sur deux table
- Table ascii - Guide
- Table des matières word - Guide
- Deux comptes whatsapp - Guide
- Excel cellule couleur si condition texte - Guide
- Windows update 0x80070643 - Guide
3 réponses
dam75
Messages postés
1043
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
4 juin 2009 à 10:20
4 juin 2009 à 10:20
c'est pas top (Mysql 5 est sorti depuis 2 ans) m'enfin ca devrait marcher quand meme :)
La seule piste que je voie : ta colonne products_id dans la table specials n'est PAS configuree en NOT NULL, ce qui fait qu'elle contient des "valeurs" NULL ... ca aurait aidé si tu avais poste le show create table ;)
Si c'est ca, 2 solutions :
- modifie la en NOT NULL de maniere a ce que il y ait des 0 (zero) au lieu de NULL
- essaie en sub-queries, mais je ne suis pas sur que ca marche en mysql 4 :
UPDATE products
SET products.quantity = 0
WHERE products_id NOT IN (
SELECT DISTINCT products_id FROM specials
)
Tip : souvent, c'est mieux de declarer les colonnes en NOT NULL, justement à cause de ce genre de problèmes ...
La seule piste que je voie : ta colonne products_id dans la table specials n'est PAS configuree en NOT NULL, ce qui fait qu'elle contient des "valeurs" NULL ... ca aurait aidé si tu avais poste le show create table ;)
Si c'est ca, 2 solutions :
- modifie la en NOT NULL de maniere a ce que il y ait des 0 (zero) au lieu de NULL
- essaie en sub-queries, mais je ne suis pas sur que ca marche en mysql 4 :
UPDATE products
SET products.quantity = 0
WHERE products_id NOT IN (
SELECT DISTINCT products_id FROM specials
)
Tip : souvent, c'est mieux de declarer les colonnes en NOT NULL, justement à cause de ce genre de problèmes ...
dam75
Messages postés
1043
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
3 juin 2009 à 20:52
3 juin 2009 à 20:52
Bonjour,
"mettre à zero la quantité de tous les produits qui ne sont PAS dans specials" : essaie un truc comme ca :
UPDATE products SET products.quantity = 0
FROM products LEFT JOIN specials USING (products_id)
WHERE ISNULL(specials.products_id);
ou (je crois que les 2 marchent)
UPDATE products LEFT JOIN specials USING (products_id)
SET products.quantity = 0
WHERE specials.products_id IS NULL;
Bon courage
"mettre à zero la quantité de tous les produits qui ne sont PAS dans specials" : essaie un truc comme ca :
UPDATE products SET products.quantity = 0
FROM products LEFT JOIN specials USING (products_id)
WHERE ISNULL(specials.products_id);
ou (je crois que les 2 marchent)
UPDATE products LEFT JOIN specials USING (products_id)
SET products.quantity = 0
WHERE specials.products_id IS NULL;
Bon courage
dam75
Messages postés
1043
Date d'inscription
lundi 4 mai 2009
Statut
Webmaster
Dernière intervention
21 février 2023
67
4 juin 2009 à 09:49
4 juin 2009 à 09:49
ca n'est pas normal ...
1/ quelle version de Mysql utilises-tu ?
2/ tu peux donner la structure de tes tables ((SHOW CREATE TABLE)
1/ quelle version de Mysql utilises-tu ?
2/ tu peux donner la structure de tes tables ((SHOW CREATE TABLE)
4 juin 2009 à 10:34
UPDATE products
SET products_quantity = 0
WHERE products_id NOT IN (
SELECT DISTINCT products_id FROM specials
)
marche trés bien.
merci encore