Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107

    [MySql] Help con una strana query

    Salve a tutti, devo fare una query particolare

    codice:
    TABELLA LISTINO 
    ID
    NOME
    SOP
    COSTO
    
    Esempio 
    1   Versione_A  0   5000
    2   Versione_B  0   4000
    3   Versione_C  0   3400
    4   Versione_C  3   3200
    Ve la spiego : la riga 4 in pratica ha nella colonna "SOP" l'ID che quella riga va a soppiantare.

    Per cui di base la VERSIONE_C costa 3400, per questa settimana costa 3200.

    Dovrei far si che la query prendesse solo le righe "attive", ossia la 1,2 e 4

    Capito? come posso fare?

    La query(errata) tipo sarebbe

    SELECT * from TAB where ID<>SOP
    Guybrush Threepwood

  2. #2
    devi avere "qualcosa" che dica se la riga e' attiva oppure no.

    Non hai nulla che ti faccia capire quale riga devi prelevare a meno che tu non intenda quella con id piu' alto a parita' di nome. Ma anche no, perche' indichi righe attive per settimana.

    Non si possono estrarre dal db le informazioni che non esistono.

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

  3. #3
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    praticamente...il concetto della query sarebbe

    "se il valore del campo ID compare nell'elenco dei valori del campo -SOP- non includerlo nella selezione"
    Guybrush Threepwood

  4. #4
    Originariamente inviato da Threepwood
    praticamente...il concetto della query sarebbe

    "se il valore del campo ID compare nell'elenco dei valori del campo -SOP- non includerlo nella selezione"
    bohhh.... fai due query:

    select id from tabella where SOP > 0

    metti gli id in una variabile separati da una virgola e poi li passi alla query seguente con NOT IN


    select *
    from tabella
    where id NOT IN($var_id)

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

  5. #5
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Originariamente inviato da piero.mac
    bohhh.... fai due query:

    select id from tabella where SOP > 0

    metti gli id in una variabile separati da una virgola e poi li passi alla query seguente con NOT IN


    select *
    from tabella
    where id NOT IN($var_id)

    giusto.... direi che è la cosa migliore senza scervellarsi
    Guybrush Threepwood

  6. #6
    Considerando che l'ID non può mai essere nullo non ti basta verificare appunto che la colonna SOP contenga 0 ??
    Però dovresti indicare nella riga "soppiantata" l'ID di quella che la "soppianta" e non viceversa...in questo modo semplifichi il tutto credo...
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  7. #7
    Originariamente inviato da piero.mac
    bohhh.... fai due query:

    select id from tabella where SOP > 0

    metti gli id in una variabile separati da una virgola e poi li passi alla query seguente con NOT IN


    select *
    from tabella
    where id NOT IN($var_id)
    Questo proposto da Piero.mac lo potresti anche fare con un'unica query:

    select *
    from tabella
    where id NOT IN (select id from tabella where SOP > 0)

    Se dà errore, prova:

    select B.*
    from tabella as B
    where B.id NOT IN (select A.id from tabella as A where A.SOP > 0)

  8. #8
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    niente subquery, ho mysql<5
    Guybrush Threepwood

  9. #9
    Originariamente inviato da Threepwood
    niente subquery, ho mysql<5
    Ok allora usa il metodo proposto da Piero.mac.
    Cmq, al di là delle subquery, conviene sempre utilizzare l'ultima versione di MySQL sia per le prestazioni che la sicurezza.
    Ciao.

  10. #10
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    lo so bene... dobbiamo pianificare l'aggiornamento...
    Guybrush Threepwood

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.