- Home
- Categorie
- Coding e Sistemistica
- PHP
- intersezione
-
intersezione
ciao a tutti,
Ho bisogno di un aiuto.ho necessità di fare l'intersezione tra un attributo di due tabelle.io ho dentro la tabella costumers gli id dei customers che si sono iscritti al mio sito e nella tabella orders ho gli id dei costumers che hanno fatto gli ordini.
Essendo su aruba il mysql è il 4.07 e non riesco a trovare una query che mi dia tutti i customers che NON hanno fatto ordini.
La cosa ideale sarebbe sottrarre da tutti i customers solo quelli che hanno fatto gli ordini ma ne con i comandi intersect except <>all not in e not exists sono riuscito.Come posso fare?
Grazie
-
Se puoi utilizzare le subquery (controlla quale versione di mysql le supporta) fai così:
SELECT id FROM customers WHERE id NOT IN (SELECT customer_id FROM orders)
-
Su aruba faccio la tua query e mi da questo errore
Errore**query SQL:** [![image](http://mysql.aruba.it/phpMyAdmin/phpMyAdmin/themes/original/img/b_help.png)](http://dev.mysql.com/doc/refman/4.1/en/select.html) SELECT customers_id
FROM customers
WHERE customers_id NOT
IN (
SELECT customer_id
FROM orders
)
LIMIT 0 , 30
**Messaggio di MySQL: **
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT customer_id FROM orders )
LIMIT 0, 30' at line 1
-
Starting with MySQL 4.1, all subquery forms and operations that the SQL standard requires are supported
La tua versione di mysql non supporta le subquery.
Non puoi farlo con solo mysql, devi lavorare anche con il php.