Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Order by ....

Îåêßíçóå áðü ôï ìÝëïò Bill . Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 20-03-2008, 11:03. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-03-2008, 12:17 40980

    Order by ....

     Αντιμετωπίζω ένα μικρό πρόβλημα και θα θελα και τι γνώμη σας ή τυχόν συμβουλές σας!!!

    Έχω ένα query όπου έχω δύο select και τα κάνω union all  (όχι union σκέτο) και κάνω Order by 1 (το πρώτο μου select) ωστόσο θέλω στο Ordering μου να προσθέσω να κάνει Ordering με ένα ακόμη πεδίο που υπάρχει και στα δύο μου select παρόλο που την πρόσθεσα δυστηχώς δεν μου κάνει Ordering με βάση το πεδίο εκείνο....!!Το δοκιμάζω σε SQL Server 2005...!!

     


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  19-03-2008, 14:14 40983 σε απάντηση της 40980

    Απ: Order by ....

    Μπορείς να γράψεις το query; Δεν είμαι σίγουρος ότι καταλαβαίνω τι εννοείς...


    Vir prudens non contra ventum mingit
  •  20-03-2008, 00:12 41007 σε απάντηση της 40983

    Απ: Order by ....

    Πιθανώς θα πρέπει να κάνει το JOIN query, nested σε ένα απλό query που θα κάνει το ordering...

    κάτι σαν

    SELECT * FROM (
      SELECT ColA, ColB FROM Table1
      UNION ALL
      SELECT ColC, ColD FROM Table2
    ) ORDER BY ColA

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  20-03-2008, 01:03 41013 σε απάντηση της 41007

    Απ: Order by ....

    Δεν χρειάζεται... Αν έχω καταλάβει καλά, προσπαθείς να κάνεις κάτι σαν το παρακάτω (παράδειγμα με πίνακες από τη Northwind):

    SELECT Customers.CompanyName,
    Customers.City,
    Customers.ContactName
    FROM Customers
    UNION ALL
    SELECT Suppliers.CompanyName ,
    Suppliers.City ,
    Suppliers.ContactName
    FROM Suppliers
    ORDER BY 2,1

    Δουλεύει κανονικά, ταξινομεί πρώτα ως προς City και μετά ως προς το Company Name. Μήπως στα data που δοκιμάζεις το query δεν έχει νόημα η ταξινόμηση που προσπαθείς να κάνεις;


    Vir prudens non contra ventum mingit
  •  20-03-2008, 09:43 41022 σε απάντηση της 41013

    Απ: Order by ....

    Τελικά .....

    select  1,  cc.CompanyName,
          b.City,
          cc.ContactName
    FROM Customers cc

    left join book b on b.ContactName = cc.ContactName  
      UNION ALL

    SELECT 2,   SS.CompanyName ,
               b.City ,
              ss.ContactName
    FROM Suppliers ss

    left join book b on b.ContactName = ss.ContactName

    ORDER BY 1,b.CITY      (υπόψιν το city σε μένα είναι απο τον ίδιο πίνακα κανω και join σε κάθε select)

    Έτσι το δοκίμασα σε SQL 2005 και δουλεύει αλλα δεν είμαι σιγουρος σε 2000 αν θα δουλεύει!!


    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  20-03-2008, 11:03 41025 σε απάντηση της 41022

    Απ: Order by ....

    Δηλαδή η αρχική σου ερώτηση ήταν, αν ενώνω τα αποτελέσματα δύο SELECT με ένα UNION ALL, πως θα εμφανίσω πρώτα τα αποτελέσματα του πρώτου query και μετά του δεύτερου?

    Θα είχες γλυτώσει τη φασαρία αν αντί για select  1,  cc.CompanyName, έγραφες select  1 As OrderColumn,  cc.CompanyName, και στο τέλος έγραφες ένα ORDER BY OrderColumn,CITY     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems