Διπλή αρίθμηση σε εγγραφές πίνακα

Γενικές συζητήσεις για SQL και SQL Servers (RDBMS)

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

Απάντηση
cghera
Δημοσιεύσεις: 11
Εγγραφή: 02 Ιουν 2010 20:33

Διπλή αρίθμηση σε εγγραφές πίνακα

Δημοσίευση από cghera » 23 Νοέμ 2010 17:20

Γεια χαρά,
Ψάχνω να βρω έναν τρόπο με κάποιο query (ή σειρά από queries) να αριθμήσω κάποιες εγγραφές σε έναν πίνακα που έχω σε μία βάση, με διπλούς αα όμως. Έστω οτι ο πίνακας έχει εγγραφές για τηλέφωνα πελατών και έχει τον κωδικό του πελάτη που είναι μοναδικός αλλά τα τηλέφωνα είναι πολλά και θελω να τα αριθμήσω ανα πελάτη.
Π.χ.

Έχω αυτό τώρα
ΑΑ,Πελάτης,αατηλεφώνου
1,1,null
2,1,null
3,1,null
4,2,null
5,2,null
6,3,null
7,4,null
8,4,null
9,4,null
10,4,null
και θέλω να καταλήξω σε αυτό

1,1,1
2,1,2
3,1,3
4,2,1
5,2,2
6,3,1
7,4,1
8,4,2
9,4,3
10,4,4

επι της ουσίας δηλαδή όταν αλλάζει ο πελάτης να αρχίζει η αρίθμηση ξανα.
Ο πίνακας υπάρχει ήδη οπότε δεν μπορώ να προσθέτω τον αα του τηλεφώνου οταν κάνω εγγραφές. Θέλω να κάνω update τον ήδη υπάρχοντα πίνακα.
Ξέρετε πως θα μπορούσα να το κάνω αυτό;
Ευχαριστώ πολύ.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Διπλή αρίθμηση σε εγγραφές πίνακα

Δημοσίευση από dva_dev » 24 Νοέμ 2010 01:18

Δοκίμασε να φτιάξεις έναν νέο πίνακα (πχ. tmp) ή view* χρησιμοποιώντας το query που σου φέρνει την αρίθμηση στο OrderNo

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

select table1.aa, table1.pelaths, (select count(*) from table1 t1 where table1.pelaths = t1.pelaths and table1.aa >= t1.aa) as orderno
from table1 order by table1.pelaths, table1.aa;
και μετά να κάνεις update το τηλέφωνο χρησιμοποιώντας το OrderNo του tmp.

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

update table1 inner join tmp on table1.aa=tmp.aa set table1.tηlefono = tmp.orderno;
Η ακριβής σύνταξη ίσως να διαφέρει από βάση σε βάση, οπότε ρίξε μια ματιά και στο documentation της sql.

*με view λογικά δεν θα έχεις πρόβλημα, αλλά δεν είμαι σίγουρος. Αν φτιάξεις όμως πίνακα σίγουρα θα παίξει.

cghera
Δημοσιεύσεις: 11
Εγγραφή: 02 Ιουν 2010 20:33

Διπλή αρίθμηση σε εγγραφές πίνακα

Δημοσίευση από cghera » 08 Δεκ 2010 10:53

Ομολογώ πως με μπέρδεψες λίγο στο πρώτο query.
Εγώ έχω έναν πίνακα (έστω table1). Ο πίνακας που αναφέρεις ως t1 ποιος πρέπει να είναι;
γιατί βλέπω οτι στο εσωτερικό select γράφεις "count(*) from table1 t1". Να υποθέσω οτι ανάμεσά τους έχει κόμμα και είναι άλλος πίνακας ο t1 ;
Εγώ κατάλαβα οτι το πρώτο query όταν βγει θα δημιουργήσει τον πίνακα tmp. αλλά δεν καταλάβαινω πως θα κάνω table1.pelaths=t1.pelaths αφου έχω έναν πίνακα.
Ευχαριστώ.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Διπλή αρίθμηση σε εγγραφές πίνακα

Δημοσίευση από dva_dev » 08 Δεκ 2010 13:03

http://www.sqltutorial.org/sqlalias.aspx

Γενικά ρίξε μια ματιά για SQL ALIASes

cghera
Δημοσιεύσεις: 11
Εγγραφή: 02 Ιουν 2010 20:33

Διπλή αρίθμηση σε εγγραφές πίνακα

Δημοσίευση από cghera » 14 Δεκ 2010 15:14

Σε ευχαριστώ πολύ.
Φαίνεται να δουλευει. ΑΝ προκύψει κάτια θα ρωτήσω πάλι.

Απάντηση

Επιστροφή στο “Βάσεις Δεδομένων και SQL - γενικά”

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

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