Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802

    Select su due tabelle con dati ripetuti

    Ciao a tutti,
    ho due tabelle che si chiamano "codice" e "classi":

    - Campi presenti in tabella "codice"
    Ext

    - Campi presenti in tabella "classi"
    Ext
    Nome
    Cognome

    Io dovrei estrarre tutti i dati dove classi.Ext non inizia con 'zz', è presente più di una volta e risultano diversi sia Nome che Cognome. Oltre a questo, classi.Ext deve risultare presente anche nella tabella "codice".

    Quindi, esempio:

    Tab. Codice
    Ext
    pp1
    cc2
    zz4
    mm5

    Tab. classi
    Ext Nome Cognome
    pp1 A B
    pp1 A B
    cc2 C D
    ss3 N Y
    zz4 E F
    zz4 E F
    mm5 G H
    mm5 I L


    Io dovrei estrarre quindi
    Ext Nome Cognome
    mm5 G H
    mm5 I L


    Perchè?
    - pp1 è presente due volte ma risulta sempre con nome e cognome uguali
    - cc2 compare una sola volta
    - ss3 non è presente nella tab Codice
    - zz4 inizia con "zz"
    - mm5 risulta presente più di una volta e compare con nome e cognome differenti

    Sapreste darmi una mano? Spero sia abbastanza chiara la mia richiesta.
    Grazie mille
    www.beppegrillo.it
    Il blog di Beppe!!

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    select * from classi left join codice on classi.ext = codice.ext where classi.ext not like 'zz%'

    questo dovrebbe prendere tutto dove ext non inizia per zz e dove ext e' uguale a ext di codice
    PS se nn funziona * usa i nomi dei campi

  3. #3
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Originariamente inviato da marco80
    select * from classi left join codice on classi.ext = codice.ext where classi.ext not like 'zz%'

    questo dovrebbe prendere tutto dove ext non inizia per zz e dove ext e' uguale a ext di codice
    PS se nn funziona * usa i nomi dei campi
    Si ma manca un tocco, quello che hai postato lo sapevo anche io, è il resto che non riesco a fare. Se hai suggerimenti...
    Grazie in ogni caso per l'intervento
    www.beppegrillo.it
    Il blog di Beppe!!

  4. #4
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    select * from classi left join codice on classi.ext = codice.ext where classi.ext not like 'zz%' AND classi.nome != classi.cognome

    Per quanto rigurda i record doppi nn saprei. Non so se e' possibile con una query. Sarebbe come l'opposto della distinct. Potresti metteri i risultati in un ciclo e filtrarli per ricomporre i resulset.

  5. #5
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Originariamente inviato da marco80
    select * from classi left join codice on classi.ext = codice.ext where classi.ext not like 'zz%' AND classi.nome != classi.cognome

    Per quanto rigurda i record doppi nn saprei. Non so se e' possibile con una query. Sarebbe come l'opposto della distinct. Potresti metteri i risultati in un ciclo e filtrarli per ricomporre i resulset.
    AND classi.nome != classi.cognome
    Questa clausola è sbagliata. Ovviamente il nome è sempre diverso dal cognome.
    La Query devo farla da riga di comando SQL, se fosse usata su una pagina PHP non ci sarebbe problema, basterebbe farla con dei cicli, come hai deto anche tu. Se non ci sono alternative, la farò da pagina PHP ma se posso evitarmela è meglio.
    www.beppegrillo.it
    Il blog di Beppe!!

  6. #6
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    UP!
    www.beppegrillo.it
    Il blog di Beppe!!

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    prova questa:
    codice:
    select cl.ext,nome,cognome from classi cl
    inner join codice 
    on cl.ext = codice.ext 
    where cl.ext not like "zz%" group by concat(cl.ext,nome,cognome)
    having count(concat(cl.ext,nome,cognome)) < 2 and
    cl.ext in 
    (select ext from classi group by ext having count(ext) > 1);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.