Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

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

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

Απάντηση
Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από majuranus » 19 Ιουν 2008 12:38

πχ εχω μια βάση με κάποια πεδία

onoma
til
poli

αν έχει κάποιες εγγρραφές ο πίνακας
πως μπορώ σε μία σελίδα να εμφανίσω αυτές τις πληροφορίες??


Βέροια : 50
Νάουσα: 45
Αθήνα:60
στην ουσία θέλω να μετράει τις εγγραφές ανάλογα με την πόλη και να μου εμφανίζει τον αριθμό... καμιά ιδέα ! α να τονίσω ότι δεν είμαι και κανένας γκουρού!!...

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

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από Rapid-eraser » 19 Ιουν 2008 13:12

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

SELECT COUNT(*) AS `plithos` FROM `mytable` WHERE `poli` = 'Αθήνα'
Καλό θα ήταν πάντως η πόλη να μην περιέχεται σαν string αλλά σαν νούμερο και σε κάποιον άλλο πίνακα να αντιστοιχίσεις την πόλη με κάποιο string.

Δεν είναι θέμα php αυτό γι` αυτό και το μεταφέρω στην σωστή κατηγορία .
Τελευταία επεξεργασία από το μέλος Rapid-eraser την 19 Ιουν 2008 13:25, έχει επεξεργασθεί 1 φορά συνολικά.
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

alexsoft

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από alexsoft » 19 Ιουν 2008 13:19

Φυσιολογικά το παρακάτω θα σου βγάλει το σύνολο των ονομάτων ανά πόλη.

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

$query = "SELECT poli, COUNT(onoma) AS num FROM mytable GROUP BY poli ORDER BY poli ASC";
$results = mysql_query($query, $resource_connection);

while ($row = mysql_fetch_array($results, MYSQL_ASSOC)) {
    echo $row['poli'].": ".$row['num'];
}
mysql_free_result($results);


Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από majuranus » 19 Ιουν 2008 14:08

Ευχαριστώ πολύ πάω σπίτι να το δοκιμάσω!!!!

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από majuranus » 19 Ιουν 2008 14:50

Rapid-eraser

Αυτό που λές ξέρω να το κάνω στην Access με σχέσεις, στην Mysql πως μπορώ να συνδέσω δύο πίνακες? εψαξα στον phpmyadmin αλλά δεν έβγαλα άκρη, υπάρχει κάποιο βοήθημα??

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

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από Rapid-eraser » 19 Ιουν 2008 15:19

Στην mySQL τα πράγματα είναι λίγο μπλεγμένα,
καθώς η παραπάνω διαδικασία υλοποιείται ανάλογα με το storage engine με ή χωρίς χρήση των foreign keys.

Ας μείνουμε σε πρώτη φάση χωρίς την χρήση των foreign keys. Σχεδιάζεις ανεξάρτητους τους πίνακες έχοντας στο μυαλό ότι θα τους χρησιμοποιήσεις σε Relation.

Έστω λοιπών ο πίνακας που περιέχει τα στοιχεία των πόλεων. poleis (id,name,population)
και ο πίνακας που περιέχει τα στοιχεία epafes(id,name,poli_id,tilefono)

Όταν κάνεις την καταχώρηση στον πίνακα epafes φροντίζεις το poli_id της πόλης να αντιστοιχεί με το αποθηκευμένο id της πόλης και αποθηκεύεις το id όχι το όνομα.
Αυτό αρχικά σε προστατεύει από διάφορα θεματάκια
καθώς μπορείς να αλλάξεις συλλογικά κάποια στοιχεία απο τον πίνακα των πόλεων χωρίς να επέμβεις στον πίνακα των επαφών.

Τώρα πως κάνουμε την σύνδεση στα select .

Εδώ μπαίνει μπροστά το join.
Στην mySQL συναντάμε 4 κύριους τύπους join.
LEFT , RIGHT , INNER , OUTER
Όλα έχουν την χρήση τους και εξυπηρετούν διαφορετικούς σκοπούς.
Αυτό που μας ενδιαφέρει σε πρώτη φάση είναι το INNER JOIN
αλλιώς γνωστό και σαν simple join.

Αυτό ενώνει τους δύο ή περισσότερους πίνακες με βάση κάποιο κοινό χαρακτηριστικό τους.
Υπάρχουν αρκετοί τρόποι που μπορείς να το γράψεις αυτό θα μείνω σε αυτών που χρησιμοποιώ εγώ.

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

    SELECT `epafes`.* , `polis`.`name` 
       FROM `epafes` INNER JOIN `polis`
           ON `epafes`.`poli_id` = `polis`.`id`
     WHERE ......
ORDER BY ....
Το παραπάνω query θα φέρει όλες τις εγγραφές του πίνακα epafes
και θα το ενώσει με τον πίνακα polis ενώνοντας τις εγγραφές όπου επαληθεύεται
η συνθήκη στο ON. Ταυτόχρονα έχω φιλτράρει τα πεδία που θα φέρει η mySQL
και θα επιστρέψει όλα τα στοιχεία του πίνακα epafes και μόνο το όνομα τις πόλης
σε κάθε row σαν να ήταν ένας κοινός πίνακας που περιείχε όλα τα στοιχεία μαζί.

More info RTFM
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

Άβαταρ μέλους
majuranus
Δημοσιεύσεις: 404
Εγγραφή: 01 Μαρ 2006 19:47
Τοποθεσία: Veria
Επικοινωνία:

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από majuranus » 19 Ιουν 2008 15:22

Πολύ καλό το παράδειγμα σου! ευχαριστώ!!

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από Apostolis_38 » 25 Ιουν 2008 13:32

majuranus έγραψε:στην Mysql πως μπορώ να συνδέσω δύο πίνακες?
Ενας άλλος τρόπος είναι να ονομάσεις έναν απο τους πίνακες σαν α και τον άλλο σαν β κλ.π. για κάθε πίνακα.

π.χ.: SELECT a. onoma, a.til,a.poli, b.onoma2, b.til2, b.poli2
FROM table a, table1 b
WHERE a.onoma = b.onoma2 κ.λ.π. κ.λ.π.

Το καλό με αυτόν τον τρόπο είναι οτι μπορείς να συνδέσεις "άπειρους" πίνακες και να θέσεις "άπειρα" λεπτομερή κριτήρια (με το where - and where). Επίσης μπορείς να χρησιμοποιήσεις όλες τις παραμέτρους της MySQL. (SELECT * - distinct - count κ.λ.π., CREATE AS SELECT, SELECT πεδίο ΝΕΟ ΟΝΟΜΑ ΠΕΔΙΟΥ) και λοιπά και λοιπά...
Το κακό είναι οτι απαιτεί πολύ προσεκτική γραφή. Ενα κόμα (,) ή μία τελεία (.) να σου ξεφύγει και η εντολή δεν τρέχει.

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

Πως μπορώ να μετρήσω τις εγγραφές σε μια mysql

Δημοσίευση από Rapid-eraser » 26 Ιουν 2008 11:52

Για την ακρίβεια ο παραπάνω τρόπος είναι simple join (INNER) με διαφορετικό τύπο σύνταξης.
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

Απάντηση

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

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

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