nested set join query

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

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

Απάντηση
Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

nested set join query

Δημοσίευση από Khronos » 14 Νοέμ 2011 19:10

Πειραματίζομαι με τα nested sets διαβάζοντας αυτό το άρθρο http://www.vbmysql.com/articles/databas ... a-in-mysql και έχω το query που τραβάω όλο το δέντρο με το level του κάθε node.
Εκτός απο τον πίνακα των κατηγοριών(businesscategories) έχω και τον πίνακα για το πολυγλωσσικό κομμάτι (businesscategories_lang) και θέλω να τους κάνω join.
Αυτό που έχω γράψει μου φέρνει τα αποτελέσματα που θέλω αλλά είναι σωστό? Μπορεί να γραφεί καλύτερα? Ό,τι στήλες χρειάζομαι πρέπει να τις γράφω και στο εξωτερικό και στο εσωτερικό select?

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

select b.id, b.image, bl.title
from
businesscategories_lang bl,
(
    SELECT 
    node.id,
    node.image,
    (COUNT(parent.id) - 1) AS depth
    FROM businesscategories AS node,
    businesscategories AS parent
    WHERE node.lft BETWEEN parent.lft AND parent.rgt
    GROUP BY node.id
    ORDER BY node.lft
) b         
where b.id = bl.item_id AND bl.locale = 'el'

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

nested set join query

Δημοσίευση από dva_dev » 14 Νοέμ 2011 20:30

Αφού το depth δεν το χρησιμοποιείς, αν κάνεις απλώς

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

select b.id,b.image,bl.title
from businesscategories_lang bl, businesscategories b
where b.id = bl.item_id AND bl.locale = 'el' 
order by b.lft
δεν είσαι εντάξει;

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

nested set join query

Δημοσίευση από Khronos » 14 Νοέμ 2011 20:37

Το depth θα το χρησιμοποιήσω για να φτιάξω την html (ul, li κτλ.)
Απλά προσπαθούσα να το κάνω με join και δεν μου έβγαινε και το έκανα έτσι.
Γι'αυτό ρωτάω αν είναι σωστό, βέλτιστο.

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

nested set join query

Δημοσίευση από dva_dev » 14 Νοέμ 2011 21:42

Αν είναι να χρησιμοποιήσεις και το depth μια χαρά είναι.

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

nested set join query

Δημοσίευση από Khronos » 14 Νοέμ 2011 21:52

Ευχαριστώ!

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

nested set join query

Δημοσίευση από Khronos » 23 Νοέμ 2011 15:26

Δεν ανοίγω άλλο θέμα αφού αυτό που θέλω έχει σχέση πάλι με το nested set model.
Θέλω μαζί με το depth να ξέρω και πόσα προϊόντα έχει το κάθε node.
Πώς μπορώ να συνδυάσω τα παρακάτω queries για να το πετύχω?

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

SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM nested_category AS node,
        nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft;

SELECT parent.name, COUNT(product.name)
FROM nested_category AS node ,
        nested_category AS parent,
        product
WHERE node.lft BETWEEN parent.lft AND parent.rgt
        AND node.category_id = product.category_id
GROUP BY parent.name
ORDER BY node.lft;

Απάντηση

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

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

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