Scandal
Διαχειριστής
Ο Πέτρος αυτή τη στιγμή είναι συνδεδεμένος. Είναι 35 ετών, επαγγέλλεται Web developer και μας γράφει από Περιστέρι (Αττική). Έχει γράψει 19,470 μηνύματα.

20-07-12

23:36
Λοιπόν, χρειάζομαι βοήθεια στη σύνταξη ενός query (βασικά δύο αλλά κάπως κοινά). Έχουμε τους ακόλουθους δύο πίνακες. Ο post περιέχει τα δεδομένα των μηνυμάτων ενός forum και ο thumbs περιέχει τα δεδομένα των ψήφων (1 ή -1) που έχουν δώσει οι χρήστες στα μηνύματα. Σας περιγράφω τα structures που μας αφορούν για την επίλυση του προβλήματος (ίσως αναφέρω και περιττά columns):
Πίνακας "post":
postid (auto_increment)
username
userid
dateline
Πίνακας "thumbs":
id (auto_increment)
thumb (= έχει τιμές 1 ή -1)
userid
username
dateline
to_userid
postid
Προσοχή στο ότι ο thumbs έχει συνήθως πάνω από ένα κοινά postids στο αντίστοιχο column, αφού ένα μήνυμα (postid) μπορεί να έχει πάνω από 1 ψήφους (id).
Ο column userid του post και ο to_userid του thumbs έχουν την ίδια πληροφορία αντίστοιχα.
Οι dateline έχουν την σφραγίδα χρόνου που δημιουργήθηκαν τα μηνύματα ή οι ψήφοι αντίστοιχα.
Τι θέλω να κάνω;
Θέλω ένα query που θα επιστρέφει τα top 10 πιο ψηφισμένα posts με θετικές (thumb=1) και ένα query με τα top 10 πιο ψηφισμένα posts με αρνητικές (thumb=-1), τις τελευταίες 7 μέρες. Για κάθε post θα ήθελα να επιστρέφει και τον αριθμό των ψήφων που έχουν γίνει τις 7 αυτές τελευταίες μέρες (προσοχή: όχι το σύνολο των ψήφων του post αλλά το σύνολο των ψήφων σε διάστημα 7 ημερών).
Έχω γράψει το ακόλουθο αλλά δεν νομίζω να κάνει ακριβώς αυτο που ζητάω.
Πίνακας "post":
postid (auto_increment)
username
userid
dateline
Πίνακας "thumbs":
id (auto_increment)
thumb (= έχει τιμές 1 ή -1)
userid
username
dateline
to_userid
postid
Προσοχή στο ότι ο thumbs έχει συνήθως πάνω από ένα κοινά postids στο αντίστοιχο column, αφού ένα μήνυμα (postid) μπορεί να έχει πάνω από 1 ψήφους (id).
Ο column userid του post και ο to_userid του thumbs έχουν την ίδια πληροφορία αντίστοιχα.
Οι dateline έχουν την σφραγίδα χρόνου που δημιουργήθηκαν τα μηνύματα ή οι ψήφοι αντίστοιχα.
Τι θέλω να κάνω;
Θέλω ένα query που θα επιστρέφει τα top 10 πιο ψηφισμένα posts με θετικές (thumb=1) και ένα query με τα top 10 πιο ψηφισμένα posts με αρνητικές (thumb=-1), τις τελευταίες 7 μέρες. Για κάθε post θα ήθελα να επιστρέφει και τον αριθμό των ψήφων που έχουν γίνει τις 7 αυτές τελευταίες μέρες (προσοχή: όχι το σύνολο των ψήφων του post αλλά το σύνολο των ψήφων σε διάστημα 7 ημερών).
Έχω γράψει το ακόλουθο αλλά δεν νομίζω να κάνει ακριβώς αυτο που ζητάω.

Code:
SELECT post.*,
(SELECT COUNT(thumb) FROM thumbs AS thumb_table WHERE thumb_table.postid = post.postid AND thumb_table.thumb=1) AS thumbs_count
FROM post AS post
LEFT JOIN thumbs AS thumbs USING (postid)
WHERE thumbs.dateline > CURDATE() - INTERVAL 1 WEEK
GROUP BY postid
ORDER BY thumbs_count DESC
LIMIT 10
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Scandal
Διαχειριστής
Ο Πέτρος αυτή τη στιγμή είναι συνδεδεμένος. Είναι 35 ετών, επαγγέλλεται Web developer και μας γράφει από Περιστέρι (Αττική). Έχει γράψει 19,470 μηνύματα.

23-07-12

14:35
Το πρόβλημα λύθηκε! 
Σας παραθέτω το query:
Γενικά ταλαιπωρήθηκα μέχρι να ανακαλύψω την FROM_UNIXTIME() (οι dateline έχουν timestamp).

Σας παραθέτω το query:
Code:
SELECT post.*, sum1
FROM post INNER JOIN
(
SELECT postid, COUNT(thumb) AS sum1
FROM thumbs
WHERE (FROM_UNIXTIME(dateline) > CURDATE() - INTERVAL 1 WEEK) AND (thumb = 1)
GROUP BY postid
ORDER BY sum1 DESC, postid DESC
LIMIT 10
) tmp ON post.postid = tmp.postid
ORDER BY sum1 DESC, postid DESC;
Σημείωση: Το μήνυμα αυτό γράφτηκε 12 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλλεται Φοιτητής/τρια. Έχει γράψει 9,074 μηνύματα.

22-01-14

16:05
καλησπερα παιδια
χρησιμοποιω το phpmyadmin για τη συγγραφη mysql ερωτηματων. Ωστοσο εχω καποιο προβλημα και λεω να ρωτησω.
Κανωντας ενα πινακα Α και βαζοντας τα κλειδια του α1,α2 θελω να αναφερθω σε αυτα μεσω ενος πινακα Β με τα ξενα κλειδια β1,β2. Το προβλημα εναι οτι δε μπορω να κανω τα β1,β2 ξενα κλειδια.
Εχετε καμοια ιδεα ;
χρησιμοποιω το phpmyadmin για τη συγγραφη mysql ερωτηματων. Ωστοσο εχω καποιο προβλημα και λεω να ρωτησω.
Κανωντας ενα πινακα Α και βαζοντας τα κλειδια του α1,α2 θελω να αναφερθω σε αυτα μεσω ενος πινακα Β με τα ξενα κλειδια β1,β2. Το προβλημα εναι οτι δε μπορω να κανω τα β1,β2 ξενα κλειδια.
Εχετε καμοια ιδεα ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
g1wrg0s
Επιφανές μέλος
Ο 01001 αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλλεται Φοιτητής/τρια. Έχει γράψει 9,074 μηνύματα.

22-01-14

21:48
καποιο tytorial για mysql-phpmyadmin ;
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

23-01-14

20:08
καλησπερα παιδια
χρησιμοποιω το phpmyadmin για τη συγγραφη mysql ερωτηματων. Ωστοσο εχω καποιο προβλημα και λεω να ρωτησω.
Κανωντας ενα πινακα Α και βαζοντας τα κλειδια του α1,α2 θελω να αναφερθω σε αυτα μεσω ενος πινακα Β με τα ξενα κλειδια β1,β2. Το προβλημα εναι οτι δε μπορω να κανω τα β1,β2 ξενα κλειδια.
Εχετε καμοια ιδεα ;
ρίχνοντας μία πολύ γρήγορη ματιά στο phpmyadmin δε βρήκα κάποια επιλογή από το γραφικό περιβάλλον ώστε να ορίσω ένα πεδίο ως ξένο κλειδί, αλλά σε κώδικα είναι πολύ απλό:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
https://www.w3schools.com/sql/sql_foreignkey.asp
Σημείωση: Το μήνυμα αυτό γράφτηκε 11 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Χρήστες Βρείτε παρόμοια
-
Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:Tα παρακάτω 4 μέλη διάβασαν αυτό το θέμα:
-
Φορτώνει...