Visualizzazione dei risultati da 1 a 8 su 8

Discussione: SELECT di 2 tabelle

  1. #1
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303

    SELECT di 2 tabelle

    Ciao, ho un db con 2 tabelle:

    nomi (id, nome, cognome, costo, ecc.)
    azioni (id, idn, data, azione, ecc...)

    Ogni nome ha più azioni
    Voglio visualizzare una tabella che mostri le sueguenti colonne: nome, cognome, costo, data(max), azione
    dove data(max) è il record con data maggiore della seconda tabella

    Spero di essermi spiegato

    grazie mille
    ciao
    Paul

    What do you need today?
    www.uboz.it

  2. #2
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303
    Con la query:
    SELECT * FROM nomi AS N LEFT JOIN azioni AS A ON N.id = A.idc";

    funziona, ma per ogni azione mi risulta un record, duplicando i nomi, io invece voglio visualizzare solo il record con data più recente

    grazie
    Paul

    What do you need today?
    www.uboz.it

  3. #3
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303
    Ho modificato così:

    SELECT DISTINCT * FROM nomi AS N LEFT JOIN azioni AS A ON N.id = A.idn GROUP BY N.id ORDER BY A.data DESC

    Il risultato è di 1 solo record per nome ma non mi prende quello con la data maggiore
    Paul

    What do you need today?
    www.uboz.it

  4. #4
    devi usare MAX() e *soprattutto* elencare le colonne nella select! non usare DISTINCT *

  5. #5
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303
    Ho fatto così:

    SELECT DISTINCT *, MAX(data) AS d FROM nomi AS N LEFT JOIN azioni AS A ON N.id = A.idn GROUP BY N.id

    grazie
    ciao
    Paul

    What do you need today?
    www.uboz.it

  6. #6
    Quote Originariamente inviata da uboz Visualizza il messaggio
    Ho fatto così:

    SELECT DISTINCT *, MAX(data) AS d FROM nomi AS N LEFT JOIN azioni AS A ON N.id = A.idn GROUP BY N.id

    grazie
    ciao
    Sei sicuro funzioni?

    Ho adattato la tua query ad 2 tabelle che avevo ed è vero che hai il massimo della data ma l'azione associata non è quella dello stesso record.

    La prova che ho fatto è stata al volo quindi posso essermi sbagliato...

  7. #7
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303
    Quote Originariamente inviata da vitren54 Visualizza il messaggio
    Sei sicuro funzioni?

    Ho adattato la tua query ad 2 tabelle che avevo ed è vero che hai il massimo della data ma l'azione associata non è quella dello stesso record.

    La prova che ho fatto è stata al volo quindi posso essermi sbagliato...
    Si funziona, le prove le ho fatte cancellando tutte le azioni e lasciando solamente quelle di 1 o 2 record per capire al volo se l'associamente era corretto.
    Paul

    What do you need today?
    www.uboz.it

  8. #8
    Quote Originariamente inviata da uboz Visualizza il messaggio
    Si funziona, le prove le ho fatte cancellando tutte le azioni e lasciando solamente quelle di 1 o 2 record per capire al volo se l'associamente era corretto.
    Contento che tu abbia risolto...

    per la prova avevo usato 5 record con pari idn, date e azioni progressive.

    La query restituiva un record con la data massima (5° record) e l'azione minima (1° record), comunque la query era adattata su archivi che avevo già quindi posso aver sbagliato qualcosa.

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.