Visualizzazione risultati 1 fino 8 di 8

Discussione: Selezionare record in base al valore più grande di un campo facendo due JOIN

  1. #1
    Guest

    Predefinito Selezionare record in base al valore più grande di un campo facendo due JOIN

    Allora ragazzi, mi sono letto delle guide in internet, compreso un topic qui di Heracleum se no nsbaglio, dove aveva piò o meno il mio stesso problema da quel che ho capito ma non ho capito come posso risolvere.

    Ho una tabella, dove registro il timestamp() per ogni modifica fatta in una sezione e l'id della sezione.
    Codice:
    edit_band 	edit_user 	edit_time 	edit_block 	edit_reason
    1 	 	2  		1248635164  	2  		Prova Motivo
    1  		2  		1248635285  	2  		Prova Motivo 2
    Ora eseguo questa query:
    Codice:
    SELECT band.band_id, band.band_name, edit.*, user.username, COUNT(edit.edit_band) AS total
    FROM ip_bands AS band
    RIGHT JOIN ip_bands_edits AS edit ON edit.edit_band = band.band_id
    LEFT JOIN ip_users AS user ON edit.edit_user = user.user_id
    GROUP BY edit.edit_band
    ORDER BY edit.edit_time DESC LIMIT 0, 10
    E mi restituisce:
    Codice:
    band_id 	band_name 	edit_band 	edit_user 	edit_time 	edit_block 	edit_reason 	username  		total
    1  	 	Sonata Arctica 	1 	 	2 	 	1248635164 	2 	 	Prova Motivo 	FedericoBiccheddu 	2
    Come vedete non mi prende l'ultimo timestamp.

    Potrei avere più dati con lo stesso band_id, quello che conta è il timestamp.

    In poche parole devo creare un blocco dove mi visualizza le ultime sezioni modificate.

    Attendo risposte in merito

  2. #2
    Guest

    Predefinito

    prova con

    MAX(edit.edit_time) AS ultimo

  3. #3
    Guest

    Predefinito

    Puoi spiegarti meglio per favore?

  4. #4
    Guest

    Predefinito

    Ragazzi, uppo la discussione perchè non sono ancora riuscito a risolvere, non ci osno guide comprensibili in internet che fanno quello che vorrei purtroppo

    Codice:
    edit_band 	edit_user 	edit_time 	edit_block 	edit_reason
    1 	 	2 	 	1248635164 	2  		Prova Motivo
    1 	 	2 	 	1248635285 	2 	 	Prova Motivo 2
    2 	 	3 	 	1250939034 	1  		Prova Motivo 3
    1 	 	2 	 	1250978390 	4
    1 	 	2 	 	1250984273 	4
    1 	 	2 	 	1250984277 	4
    1 	 	2 	 	1250984314 	4
    1 	 	2 	 	1250984317 	4
    1 	 	2 	 	1250984351 	4
    1 	 	2 	 	1250984361 	4
    1 	 	2 	 	1250984533 	4
    Come vedete il primo campo ha diversi valori duplicati. Ora, devo prendere la riga, per ogni id univoco in edit_band che abbia l'edit_time maggiore.

    Il problema è che mi prende i dati, ma me li mischia tutti.

    Grazie in anticipo

  5. #5
    Guest

    Predefinito

    Ragazzi, scusate se insisito ma spero qualcuno mi risponda, osno bloccato con un progetto per questo problema

    E' possibile non ci sia una clausola che permetta di prendere la riga col valore maggiore per ogni id?!

  6. #6
    Guest

    Predefinito

    Innanzitutto devi vedere che tipo di dato hai.
    La soluzione di tonnaer mi sembra giusta.

  7. #7
    Guest

    Predefinito

    la soluzione che mi sembra essere stat data non l'ho capita perchè non mi ha spiegato come utilizzarla, ma solo prova a scrivere. Dove, come e quando?

    I tipi di dato li ho postati sono tutti MEDIUMINT e INT, con un solo campo VARCHAR che sono le note.

    Grazie del supporto

  8. #8
    Guest

    Predefinito

    Allora ragazzi, mi scuso l'ennesima volta, ma mi pare strano non ci sia soluzione al mio problema Non voglio far intendere nulla con l'emoticon, ma solo che è impossibile non si possa fare e ringrazio per ora delle risposte che mi sono state date.

    Ho provato a fare:
    Codice:
    SELECT * FROM `ip_bands_edits`
    WHERE (SELECT MAX(edit_time) FROM `ip_bands_edits`)
    GROUP BY edit_band
    ma come se niente fosse, non riesco più a cavarne piede

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •