J'ai ces tables:tableau avec des valeurs d'une autre table
customer:
customer_id vat_number
=========== ==========
1 ES-0000001
2 ES-0000002
3 ES-0000003
invoice:
invoice_id customer_id vat_number
========== =========== ==========
100 1 NULL
101 3 NULL
102 3 NULL
103 2 NULL
104 3 NULL
105 1 NULL
Je veux remplir les valeurs NULL à invoice.vat_number
avec les valeurs actuelles de customer.vat_number
. Est-il possible de le faire avec une seule instruction SQL?
Ce que je déclenche donc bien une erreur de syntaxe:
UPDATE invoice
SET vat_number=cu.vat_number /* Syntax error around here */
FROM invoice iv
INNER JOIN customer cu ON iv.customer_id=cu.customer_id
WHERE invoice.invoice_id=iv.invoice_id;
UPDATE + JOIN + SET Il est difficile de repérer dans le manuel, même si maintenant je sais comment c'est fait, c'est un peu évident ... Merci beaucoup –
La syntaxe "ANSI-92 JOIN" est trompeuse. conforme à ANSI-92: n'autorise pas de JOIN du tout, nécessite l'utilisation de sous-requêtes scalaires, par exemple 'UPDATE INVOICE SET vat_number = (SELECT client_id FROM CLIENT O C CUSTOMER.customer_id = INVOICE.customer_id) O WH EXISTE (SELECT * FROM CLIENT O WH CUSTO MER.customer_id = INVOICE.customer_id); ' – onedaywhen
... notant que vous indiquerez plus tard qu'il s'agit d'une syntaxe propriétaire. – onedaywhen