SQL kai Count!

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

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

Απάντηση
savpan
Δημοσιεύσεις: 14
Εγγραφή: 26 Μαρ 2006 01:36

SQL kai Count!

Δημοσίευση από savpan » 14 Σεπ 2006 18:16

Paidia an thelete rikste ta fota sas!

exw dio pinakes:

1os:Categories

categoryID
title
description


2os:Forums

forumID
title
categoryID
description



To erwtima pou vazo stin SQL einai to:

SELECT count(forums.forumID) as plithos, categories.categoryID, categories.description
FROM categories, forums
where forums.categoryID=categories.categoryID
GROUP BY categories.categoryID


Pos ginete se periptosi pou an to 'forums.categoryID=categories.categoryID' den ifistate, na pernei o pinakas sto sigekrimeno pedio 'plithos' tin timi 0(kai na emfanizei kai ta ipolipa rows fisika(categoryID, description))?

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

SQL kai Count!

Δημοσίευση από shadow » 15 Σεπ 2006 00:23

με left join

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

SELECT c.plithos, categories.
            categoryID, 
            categories.description
FROM categories
LEFT OUTER JOIN (SELECT count(forumID) as plithos, categoryID FROM forums group by categoryID)as C ON c.categoryID=categories.categoryID
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

savpan
Δημοσιεύσεις: 14
Εγγραφή: 26 Μαρ 2006 01:36

SQL kai Count!

Δημοσίευση από savpan » 16 Σεπ 2006 20:42

popo! ontos! Efxaristw paaaaaaaaaaara poly fili! :kaloe:

Άβαταρ μέλους
Risk
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2006 01:16
Τοποθεσία: Κάπου εδώ γύρω...
Επικοινωνία:

SQL kai Count!

Δημοσίευση από Risk » 20 Σεπ 2006 02:10

Επειδή πιστεύω πως ένα από τα καλά του freestuff είναι να μας διδάσκει κάποια πράγματα,κάνω την παρακάτω ερώτηση εκπαιδευτικού περιεχομένου...Αφορά την παρατάκω γραμμή κώδικα:

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

LEFT OUTER JOIN (SELECT count(forumID) as plithos, categoryID FROM forums group by categoryID)as C ON c.categoryID=categories.categoryID
Και ρωτάω...τι ακριβώς κάνει το "left outer join" και γιατί αντί να υπάρχει where,υπάρχει on?Ευχαριστώ!
Εικόνα

Άβαταρ μέλους
shadow
Script Master
Δημοσιεύσεις: 606
Εγγραφή: 14 Απρ 2005 18:30

SQL kai Count!

Δημοσίευση από shadow » 20 Σεπ 2006 21:16

ουσιαστικά το natural join

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

select t1.column1, t2.column2 
from table1 t1, table2 t2
where t1.column1=t2.column2
θα σου επιστρέψει τα records του πίνακα table1 που εχουν foreign key(ή τα fields column1, column2 εχουν τις ίδιες τιμές :kaloe: ) με τον πίνακα t2 και μόνο αυτά.
Στην περίπτωση όμως που θες να σου επιστραφούν όλα τα records του table1 και εαν υπάρχουν συσχετιζόμενες εγγραφές στον πίνακα table2 τοτε να επιστραφούν και αυτές , τοτε πρεπει να χρησιμοποιηθεί left join (υπαρχει και το right join αλλα δεν το συμπαθώ οποτε δεν το αναφέρω τι κάνει :D ). Το on ουσιαστικά είναι το where που βάζεις στο natural join και καθορίζει με βαση ποιες συνθήκες θα γίνει το join..
Close your eyes
For your eyes will only tell the truth and the truth isnt what you want to see
In the dark, is it easy to pretend that the truth is it ought to be.
Programmers are programmers because they like to code

Άβαταρ μέλους
Risk
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2006 01:16
Τοποθεσία: Κάπου εδώ γύρω...
Επικοινωνία:

SQL kai Count!

Δημοσίευση από Risk » 25 Σεπ 2006 01:37

Σε ευχαριστώ shadow η απάντησή σου ήταν πολύ κατατοπιστηκή!!!
Εικόνα

Απάντηση

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

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

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