• User Newbie

    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


  • User Attivo

    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)
    
    

  • User Newbie

    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: **image
    #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


  • User Attivo

    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.