Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320

    [MySQL] query complessa

    Ciao a tutti.. ho un problema con la costruzione di una query. ho le seguenti due tabella:

    Tabella anagrafe

    idana | cognome | nome | corso
    10 | Verdi | Paolo | storia
    12 | Bianchi | Mario | storia
    14 | Gialli | Marco | italiano


    Tabella avvisi

    id | idana | idavviso
    1 | 10 | 2
    2 | 14 | 2

    Ora io dovrei estrarre dalla tabella anagrafe i nomi delle persone a cui non è associato questo avviso...
    Mi sono un po arenato... qualcuno riesce ad aiutarmi??

    Grazie mille e ciao

  2. #2
    Prova.... dovrebbe andare.

    select a.* from anagrafe a
    LEFT JOIN annunci b on (a.idana = b.idana)
    WHERE b.idana IS null


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320
    a prima vista sembra essere perfetta.. adesso controllo bene tutti i dati che mi vengono restituiti...

    mamma mia quante cose devo ancora imparare...

    ti ringrazio infinitamente per l'aiuto..


    ciauz

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320
    allora la query in se funziona, solo che mi estrae i dati sbagliati... nel senso che mi estrae gli id che non sono associati nella tabella avvisi.

    Invece io ho bisogno questo: passo il valore dell'idavviso ammettiamo 2 ed ho bisogno che lui mi estragga dalla tabella anagrafe i nomi a cui questo non è associato.

    Esempio:

    Ammettiamo che nella tabella avvisi sia così:

    codice:
    id | idana | idavviso
    1 | 10 | 2
    2 | 14 | 2
    3 | 14 | 3
    4 | 20 | 2
    Allora io devo estrarre dalla tabella anagrafe i nomi delle persone a cui non è associato idavviso 2 quindi automaticamente escludere i nomi a cui è associato idana 10, 14,20

    Spero di essere stato chiaro..

    Ciao e grazie

  5. #5
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    ci vorrebbe l'outer join ma non so se in mysql funziona :master:
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  6. #6
    select a.* from anagrafe a
    LEFT JOIN annunci b on (a.idana = b.idana)
    WHERE b.idavviso!=2


    fatto al volo sperimao bene
    Kaworu.it
    Bookmarks on line i tuoi preferiti ovunque
    il tempo è il miglior dottore.....solo che è parecchio lento ...troppo lento
    wxKonTEXT Editor di testi(linux, win e mac), new version

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320
    cosi mi vengono selezionati quelli a cui ho inviato l'avviso uguale all'id passato

  8. #8
    Yes kaworu yes.
    tabella anagrafe
    codice:
     
          idana  cognome  nome  corso  
          10     Verdi    Paolo storia 
          12     Bianchi  Mario storia 
          14     Gialli   Marco italiano
    tabella avvisi
    codice:
         id  idana  idavviso  
          1   10     2 
          2   14     2 
          3   14     3 
          4   20     2
    query
    codice:
    select a.* from anagrafe a 
    LEFT JOIN avvisi b on (a.idana = b.idana) 
    WHERE b.idavviso != 2
    risultato
    codice:
          idana  cognome  nome  corso  
          14     Gialli   Marco italiano
    Quindi funziona, oppure il sottoscritto e kaworu capiscono una mazza di quello che vuoi fare.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320
    ok allora mi sono spiegato male... aspetta che ci riprovo...

    Con il metodo che mi avete dato voi seleziono l'anagrafica che non ha associato quell'avviso ma che però è presente nella tabella avvisi..

    Ossia se nella tabella avvisi ne ho due ad esempio idavviso 2 ed idavviso 3 con il vs. sistema seleziono dalla tabella anagrafe quelli che hanno avviso = 3

    Io invece voglio tirare su dalla tabella anagrafe tutti gli i record che non sono associati a quell'avviso..

    scusate se prima non sono stato chiaro, è che sembra un caz... sta query ma ci sto perdendo un sacco di tempo...

    grazie ancora

  10. #10
    le parole sono andate in loop.

    Posta le tabelle come sono e cosa ne vuoi ricavare, come ho fatto prima.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.