Συνδυάζοντας UNION ALL και ORDER BY στο Firebird

ψήφοι
13

Αυτή είναι η πρώτη μου απόπειρα να δοθεί απάντηση δική μου ερώτηση, αφού κάποιος μπορεί να τρέξει σε αυτό και έτσι θα μπορούσε να βοηθήσει. Χρησιμοποιώντας Firebird, θέλω να συνδυάσει τα αποτελέσματα των δύο ερωτήματα χρησιμοποιώντας UNION ALL, στη συνέχεια, να ταξινομήσετε την προκύπτουσα έξοδο σε μια συγκεκριμένη στήλη. Κάτι όπως:

(select C1, C2, C3 from T1)
union all 
(select C1, C2, C3 from T2)
order by C3

Οι παρενθέσεις προέρχονται από έγκυρη σύνταξη για άλλες βάσεις δεδομένων, και είναι αναγκαίες για να βεβαιωθείτε ότι τα επιχειρήματα για να UNION ALL (μια λειτουργία που έχει οριστεί να εργαστούν πάνω σε τραπέζια - δηλαδή μια μη διατεταγμένη σύνολο των εγγραφών) δεν προσπαθούν να παραγγελθούν ξεχωριστά. Ωστόσο, δεν μπορούσα να πάρω αυτή την σύνταξη για να εργαστούν σε Firebird - πώς μπορεί να γίνει;

Δημοσιεύθηκε 09/12/2008 στις 22:00
πηγή χρήστη
Σε άλλες γλώσσες...                            


6 απαντήσεις

ψήφοι
24

SELECT C1, C2, C3
FROM (
    select C1, C2, C3 from T1
    union all 
    select C1, C2, C3 from T2
)
order by C3
Απαντήθηκε 09/12/2008 στις 22:08
πηγή χρήστη

ψήφοι
12

Τα ονόματα των πεδίων δεν είναι απαραίτητο να είναι ίσες. Αυτός είναι ο λόγος για τον οποίο δεν μπορείτε να χρησιμοποιήσετε το όνομα του πεδίου με τη σειρά του.
Μπορείτε να χρησιμοποιήσετε το δείκτη πεδίο αντ 'αυτού. Οπως λέμε:

(select C1, C2, C3 from T1)
union all 
(select C7, C8, C9 from T2)
order by 3  
Απαντήθηκε 09/12/2008 στις 23:18
πηγή χρήστη

ψήφοι
4

Τι λέτε για:

select C1, C2, C3 from T1
union all 
select C1, C2, C3 from T2
order by 2

Τουλάχιστον στα νεότερα Firebird εκδόσεις λειτουργεί εάν παραγγείλετε από «Αριθμός» αντί να χρησιμοποιεί ένα ψευδώνυμο.

Απαντήθηκε 23/06/2015 στις 15:15
πηγή χρήστη

ψήφοι
2

Σε Firebird 1.5 αυτό λειτουργεί για μένα

create view V1 (C1, C2, C3) as
  select C1, C2, C3 from T1
  union all 
  select C1, C2, C3 from T2

και μετά

select C1, C2, C3 from V1 order by C3
Απαντήθηκε 03/02/2009 στις 15:48
πηγή χρήστη

ψήφοι
1

Εκτελέστε το UNION ALL σε μια προβολή (χωρίς τη ORDER BY ρήτρα), στη συνέχεια, επιλέξτε από την άποψη χρησιμοποιώντας ORDER BY.

Απαντήθηκε 09/12/2008 στις 22:02
πηγή χρήστη

ψήφοι
0

Προχωρώντας order byσε μια ουρά ερώτημα έχει καμία επίδραση στην DataGrid εξόδου.

select * from (
    select first 1
        C1
    from T1
    order by id desc
)
union all
select * from (
    select first 1
        C1
    from T2
    order by id desc
)
Απαντήθηκε 17/04/2017 στις 21:59
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more