Φιλτράρισμα και διαγραφή εγγραφών από βάση mysql

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
st3F0s
Δημοσιεύσεις: 17
Εγγραφή: 08 Νοέμ 2005 16:37

Φιλτράρισμα και διαγραφή εγγραφών από βάση mysql

Δημοσίευση από st3F0s » 18 Ιαν 2006 18:05

Γεια σας!!

Σε μια βάση Mysql 4.0.x έχω ένα απλό πίνακα, στον οποίο υπάρχουν δεδομένα στα εξής πεδία: ID, License και Renew_Date.

π.χ. δεδομένα πίνακα

ID Licence Renew_Date
---------------------------------------
1 a1 2003-01-02
2 a2 2002-12-18
3 a1 2004-08-04
4 a1 2005-02-02
5 a2 2004-01-15
.....
κλπ.

Θα ήθελα να ρωτήσω, πως μπορώ να διαγράψω όλες τις παλιές ημερομηνίες, ώστε το αποτέλεσμα που θα προκύψει να είναι για κάθε άδεια (Lisence), να υπάρχει στη βάση μόνο η πιο πρόσφατη ημερομηνία ανανέωσης (Renew_Data)

π.χ. ο προηγούμενος πίνακας να γίνει:

ID Licence Renew_Date
---------------------------------------
4 a1 2005-02-02
5 a2 2004-01-15
.....
κλπ.

stig
Δημοσιεύσεις: 10
Εγγραφή: 10 Ιαν 2006 09:17

Φιλτράρισμα και διαγραφή εγγραφών από βάση mysql

Δημοσίευση από stig » 20 Ιαν 2006 14:42

Κοίτα, το παρακάτω

SELECT ID, License, MAX(Renew_Date) FROM table_name GROUP BY Licence

Θα σου επιστρέψει
ID Licence MAX( Renew_Date )
1 a1 2005-02-02
2 a2 2004-01-15

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Φιλτράρισμα και διαγραφή εγγραφών από βάση mysql

Δημοσίευση από cordis » 20 Ιαν 2006 23:06

οπότε κάνεις delete όσες δεν περιέχονται στο select που σου έδωσε ο φίλος stig ;)
και λόγο του ότι η delete στην 4.0.x δεν δέχεται sub queries , αν δεν κάνω λάθος, θα πρέπει να γράψεις κάποιο script για να το κάνεις αυτό...
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Φιλτράρισμα και διαγραφή εγγραφών από βάση mysql

Δημοσίευση από Rapid-eraser » 21 Ιαν 2006 00:40

se kapoies periptoseis omos to subquery mporei va graftei me join opote paroti pas meso lamias mporeis va kaveis douleia eos eva ba8mo :P
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

st3F0s
Δημοσιεύσεις: 17
Εγγραφή: 08 Νοέμ 2005 16:37

Φιλτράρισμα και διαγραφή εγγραφών από βάση mysql

Δημοσίευση από st3F0s » 21 Ιαν 2006 22:41

Τελικά σαν μια απλή λύση που δούλεψε στην περίπτωσή μου, ήταν η δημουργία ενός νέου προσωρινού πίνακα, αντιγραφή των εγγραφών που επιστρέφει το select σε αυτόν, διαγραφή του παλιού πίνακα και rename του προσωρινού πίνακα.

Κώδικας: Επιλογή όλων

INSERT INTO TEMP_TABLE (ID, License, Renew_Date) SELECT ID, License, MAX(Renew_Date) FROM table_name GROUP BY Licence

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Φιλτράρισμα και διαγραφή εγγραφών από βάση mysql

Δημοσίευση από cordis » 22 Ιαν 2006 19:48

σωστός ;)
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες