Προς το περιεχόμενο

Πως να αλλαξω το id βάση άλλου πινακα σε mysql?


Predatorkill

Προτεινόμενες αναρτήσεις

Καλησπερα παιδια,

 

εχω ενα πινακα "table".

 

H διαταξη ειναι αυτη:

id|||||||||||||||| region ||||||||||||||| city ||||||||||||||| municipality

1|||||||||||||||||Μεσσηνια ||||||||||||||Καλαματα||||||||||||||Κεντρο

2||||||||||||||||| Αττικη ||||||||||||||| Αθηνα ||||||||||||||||Αγιος Δημητριος

 

ας πουμε λοιπον πως θελω να αλλαξω το "id" με βαση το αλφαβητικο order του "city". Εχω περιπου 200 γραμμες και ειναι ολες ανακατεμενες, αυτο που θελω ειναι να κανω αλφαβητικο ordering και το id να ειναι βαση αυτου.

 

Τι sql command πρεπει να τρεξω;

 

Ευχαριστω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

select id,city(όλες οι στήλες με τον χαρακτήρα *)

from table

order by city asc(το asc είναι αύξουσα αλφαβητική σειρά κ το desc φθίνουσα)

 

Αν κατάλαβα καλά αυτό που θες!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν θελω να κανω απλη προβολη, θελω να κανω reindex το id με βαση το asc.

 

Ετσι οπως ειναι τωρα, ειναι ανακατεμενη, θελω αφου κανω asc order τις πολης να αλλαξω ολα τα id.

 

Μπορω να το κανω χειροκινητα αλλα θελει πολυ κοπο!

 

 

iphone.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δες εδώ που έχει ένα query που δίνει σαν αποτέλεσμα αυτό που θέλεις. Για να το περάσεις στη ΒΔ, θα μπορούσες να το σώσεις το αποτέλεσμα από το query σε κάποιο csv,excel,txt και μετά να το κάνεις import.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν γνωρίζεις από PHP παρακάτω είναι η λύση

 

 

 

Ο τωρινός σου πίνακας είναι ο cities (ας πούμε).

 

Αρχικά, θα δημιουργήσεις έναν νέο πίνακα στην βάση σου με την ίδια δομή του cities και θα τοn πεις cities_new. Βέβαια, το id θα πρέπει να είναι Primary key και auto increment

 

Μετά γράφεις σε php

>
$q1 = mysql_query("SELECT region, city, municipality FROM cities ORDER BY city");
while($r1 = mysql_fetch_array($q1))
{
 $region = $r1['region'];
 $city = $r1['city'];
 $municipality = $r1['municipality '];

 $sql = "INSERT INTO cities_new (region, city, municipality ) VALUES ('".$region ."', '".$city ."', '".$municipality ."') ";
 if (mysql_query($sql))
 {
   echo "Η καταχώρηση έγινε με επιτυχία για την πόλη '".$city."'.";
 }
 else
 {
   echo "Η καταχώρηση ΔΕΝ έγινε με επιτυχία για την πόλη '".$city."'.";
 }
}

 

Έτσι στον πίνακα cities_new θα έχεις αυτό που θέλεις.

 

Υ.Γ. Το id δεν το τράβηξα από τον πίνακα cities γιατί δεν το χρειαζόμαστε

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σας ευχαριστω πολυ παιδια! Θα το δοκιμασω και θα επανελθω.

 

Ερωτηση λιγο off topic:

 

Εαν μια βαση εχει ανακατεμενα στοιχεια (οχι αλφαβητικα δλδ), γυρω στα 400 πχ, οταν καποιος κανει μια απλη select * from table order by id εχει επιπτωση στο performance; Δεν προοριζεται για web server αλλα για smartphone, γι αυτο ρωταω.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σίγουρα θα έχει κάποια επίπτωση στο performance. Ordering, aggregate functions κλπ. δεν είναι «τσάμπα» (από υπολογιστική άποψη) στην χρήση τους.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλό θα ήταν στα πεδία που κάνεις order να βάλεις κάποιο index, θα βοηθήσει λιγάκι στο performance. Πάντως, ακόμα και να ξαναδώσεις τα ids όπως θέλεις, δεν σου εγγυάται κανείς ότι όντως οι εγγραφές θα είναι αποθηκευμένες με αυτήν τη σειρά. Ειδικότερα κιόλας αν κάνεις και insert/update/delete στα δεδομένα.

 

Από περιέργεια, σε τι smartphone τρέχεις τη mysql;

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...