Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [mysql]query su 2 tabelle doh

    la situazione è questa:

    ho una tabella: PERSONA:

    idPersona, Nome, Cognome


    poi ho una tabella oggettiPosseduti:

    id, tipoOggetto, idPersona

    Quindi per ogni persona ci possono essere vari tipi di oggetti posseduti (tipoOggetto può essere un intero)

    Ora mi servirebbe una query che mi ritorna tutte le persone che NON posseggono oggetto di tipoOggetto 2 e 3 (che sono 2 tipi di oggetti)

    come potrei fare?

    io ho provato a fare tipo:

    select persona.* FROM persona,oggettiPosseduti, WHERE oggettPosss.idPersona = persona.id AND oggPosssedut.tipoOgetto != 2 AND != 3

    (lasciate stare la formatazione che ho abbozzato)

    quella query non funziona

    grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Come soluzione non mi piace per niente perchè sfrutta la funzione find_in_set() che è propria di mysql. In attesa di un qualcosa di più standard prova questa.

    codice:
    select p.*,group_concat(op.tipooggetto order by op.tipooggetto) as posseduti
    from persona as p
    inner join oggettiposseduti as op
    using (idpersona) 
    group by p.idpersona
    having find_in_set(2,posseduti) = 0 and find_in_set(3,posseduti) = 0
    edit. Così la preferisco.

    codice:
    select p.* from persona as p
    left join (
    select idpersona from oggettiposseduti
    where tipooggetto = 2 or tipooggetto = 3
    ) as t
    on p.idpersona = t.idpersona
    where t.idpersona is null

  3. #3
    HM

    ho provato l'ultima query mi dice: Unknown table 'persona'

    (persona l'ho modificato con il nome della mia tabella ovviamente)

    ma quella tabella c'è oO


    se faccio select persona.* from persona limit 10 funziona
    (con il nome della mia tab ovviametne)

    oO

  4. #4
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Unknown table 'persona'
    se il result dice quello significa che da qualche parte hai scritto persona
    Che mestiere difficile.....essere da soli ancora di più

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da xnavigator
    HM

    ho provato l'ultima query mi dice: Unknown table 'persona'

    (persona l'ho modificato con il nome della mia tabella ovviamente)

    ma quella tabella c'è oO


    se faccio select persona.* from persona limit 10 funziona
    (con il nome della mia tab ovviametne)

    oO
    Posta pari pari la tua query. Non è che per caso hai assegnato un alias di tabella e poi ti riferisci al nome originario della stessa?

  6. #6
    Originariamente inviato da nicola75ss
    Posta pari pari la tua query. Non è che per caso hai assegnato un alias di tabella e poi ti riferisci al nome originario della stessa?
    [OT]
    E pensare che xnavigator non e' l'ultimo arrivato, ma che brutta abitudine usare nomi posticci per non far conoscere un segreto (di pulcinella) come il nome di campi o di tabelle. Fare e convertire query reali con query fasulle per poi "forse" interpretare a proprio modo quanto viene detto.....

    Diciamo che si ha tempo da perdere e da far perdere.
    [/OT]

    Amen.

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

  7. #7
    Originariamente inviato da piero.mac
    [OT]
    E pensare che xnavigator non e' l'ultimo arrivato, ma che brutta abitudine usare nomi posticci per non far conoscere un segreto (di pulcinella) come il nome di campi o di tabelle. Fare e convertire query reali con query fasulle per poi "forse" interpretare a proprio modo quanto viene detto.....

    Diciamo che si ha tempo da perdere e da far perdere.
    [/OT]

    Amen.
    in realtà ho usato quell'esempio per rendere meglio la situazione

    non sarei risucito a farlo capire se lo avessi descritto con i nomi normali, cmq dopo controllo la query

  8. #8
    Originariamente inviato da nicola75ss
    Posta pari pari la tua query. Non è che per caso hai assegnato un alias di tabella e poi ti riferisci al nome originario della stessa?
    forse avevo sbagliato questo,
    cmq ho eliminato un pò di alias ora va

    thx


    chissà quando mi decidererò ad imparare ste left join

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 © 2026 vBulletin Solutions, Inc. All rights reserved.