Query το οποιο θα κανει και αλλα queries (υπο περιπτωσεις)

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

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

Απάντηση
Άβαταρ μέλους
caspave
Δημοσιεύσεις: 22
Εγγραφή: 24 Μαρ 2009 19:54

Query το οποιο θα κανει και αλλα queries (υπο περιπτωσεις)

Δημοσίευση από caspave » 21 Δεκ 2009 22:27

Καλησπερα,

Χμ...Λοιπον:
Εχω εναν πινακα(πχ τον RECORDS) που αποθηκευει διαφορα δεδομενα ως εξης:
Kαταρχην η δομη του πινακα ειναι:
Primkey - Userid - Type - Info

Εστω οτι αφορα μελη.
Εστω λοιπον οτι εγω (μελος 35) κανω εναν φιλο(μελος 59). Η εγγραφη στον πινακα γινεται ως εξης:
primkey - 35 - 1 - 59
Eστω οτι εγω κανω ενα σχολιο στο μελος 84. Η εγγραφη ειναι:
primkey - 35 - 2 - 84

(οπου type1=γινομαι φιλος, type2=κανω ενα σχολιο κλπ)

Η ερωτηση μου αφορα την εξαγωγη των δεδομενων.
Αυτο που κανω τωρα ειναι:

SELECT * FROM records where userid =35
foreach {...
if (type==1) {select onomamelous from users where userid=59....κλπ}
if (type==2) {select onomamelous,sxolio from...κλπ}
}...


Η ερωτηση μου ειναι: Μπορω να συλλεξω τα δεδομενα απευθειας απο το αρχικο query, χωρις να χρειαστει να κανω extra queries σε καθε περιπτωση;

Αυτο το θελω γιατι εμφανιζω πχ 15 αποτελεσματα ανα σελιδα. Αν πχ ενα type θελει 2,3 queries προκειμενου να μαζεψω τα αποτελεσματα τοτε θα πρεπει να γινουν γυρω στα 40πχ queries. Οποτε (και μιας και γινονται ηδη πολλα αλλα queries) θελω να το κανω σε ενα μονο απ'ευθειας.. Γινεται αυτο;


(Το προβλημα ειναι οτι ειναι περιπου 6,7 τυποι οι οποιοι δεν εχουν σχεση ο ενας με τον αλλον για να πεις οτι μπορεις να επιλεξεις 2,3 πινακες και να τελειωσεις)

Eυχαριστω!

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Query το οποιο θα κανει και αλλα queries (υπο περιπτωσεις)

Δημοσίευση από fafos » 21 Δεκ 2009 23:58

Katarxas kakos pou ta xoneis ola mazi se ena table... tha mporouses na ta moiraseis se polla tables..

koita thn join
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

Query το οποιο θα κανει και αλλα queries (υπο περιπτωσεις)

Δημοσίευση από billiaswhs » 22 Δεκ 2009 00:10

Γεια χαρά καταρχήν νομίζω ότι πρέπει να φτίαξεις ένα πίνακα με τα χαρακτηριστικά των users σε ένα άλλον πίνακα τον ποιος είναι φίλος με ποιον με σύνδεση self-referencial many-to-many relationship για δες τον παρακάτω link

http://dbdesign-sn.blogspot.com/

και τα σχόλια να πάνε χωριστά σε τρίτο

Άβαταρ μέλους
caspave
Δημοσιεύσεις: 22
Εγγραφή: 24 Μαρ 2009 19:54

Query το οποιο θα κανει και αλλα queries (υπο περιπτωσεις)

Δημοσίευση από caspave » 22 Δεκ 2009 01:52

Ναι χωριστα τα εχω. Δηλαδη:
Υπαρχει ενα table με μελη. Ενα αλλο με φιλους, ενα αλλο με σχολια κλπ...
Απλως:
Εστω οτι η μια περιπτωση ειναι να γινει φιλος με καποιον. Τοτε πρεπει να βρω 1)ποιος ειναι αυτος. Βασικα αυτο μονο.. Αλλα υπαρχει μια αλλη περιπτωση οπου πρεπει να βρω και το μελος και κατι αλλο πχ..
Οποτε 2 queries. Αν υποθεσουμε οτι κατα μεσο ορο γινονται 2 queries τοτε εχουμε 2*15(εμφανιζονται 15 αποτελεσματα ανα σελιδα) = 30+1(το αρχικο) = 31 queries.
Συν ολα τα υπολοιπα που υπαρχουν στην σελιδα, φθανουμε σε εναν μεγαλο αριθμο.

Γιαυτο και σκεφτηκα να συνοψισω αυτα τα extra queries στο αρχικο και να γινονται ολα μαζι.
Απλως κολλαω στο πως να γινει. Δηλαδη στο select, μπορω να πω πχ select ταδε where type=1 ?..

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Query το οποιο θα κανει και αλλα queries (υπο περιπτωσεις)

Δημοσίευση από fafos » 22 Δεκ 2009 02:32

exo ta ekshs 3 tables:

USERS : id, name, photo

SXOLIA: id, sxolio, user, user_id_pou_esteile_to_sxolio

FILOI : id, filos1, filos2

RECORDS: id, user, user_id_pou_to_esteile, typos

Ola auta exoun koino ton user (sto table FILOI mporei na einai o filos1 h o filos2) pantou vazoume id ton users gia na tous prosdiorisoume kai OXI onoma!

Kaneis mia join sta 4 tables kai pairneis ta apotelesmata pou thes:

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

SELECT USERS.id as userid, USERS.name as username, SXOLIA.user as sxoliouser, SXOLIA.user_id_pou_esteile_to_sxolio as sxoliosender, klp klp FROM USERS,SXOLIA,FILOI,RECORDS WHERE SXOLIA.user=USERS.id AND (FILOI.filos1=USERS.id OR FILOI.filos2=USERS.id) AND RECORDS.user=USERS.id klpklp AND USERS.id='35'
oiandhpote allo dokimaseis sthn domh ton tables tha einai lathos... dokimasmeno... kai to RECORDS mporeis na to apofygeis...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Απάντηση

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

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

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