Εγγραφή Πίνακας δύο φορές με δύο διαφορετικές τιμές για το ίδιο θέμα

ψήφοι
0

Έχω ένα ρεκόρ που έχει δύο ανθρώπους αρχεία που σχετίζονται με αυτό. Οι άνθρωποι αρχεία είναι πωλητές (peoplecode = 20) και των πελατών (peoplecode = 1). Θέλω την πόλη τόσο του πωλητή και του πελάτη. Σκέφτηκα ότι θα ήταν κατ 'ευθείαν προς τα εμπρός, αλλά δεν φαίνεται να μπορεί να το πάρει για να λειτουργήσει - έχω κανένα αποτέλεσμα. Ο πίνακας Folderpeople αφορά μόνο το φάκελο μου για τους ανθρώπους μου.

select f.folderid, f.foldername, fp.peoplecode, 
p.addrcity as clientcity, p2.addrcity as sellercity 
from folder  f
join folderpeople fp on fp.folderid = f.folderid 
join people p on fp.peopleid = p.peopleid and fp.peoplecode = 1 
join people p2 on fp.peopleid = p2.peopleid and fp.peoplecode = 20 ; 
Δημοσιεύθηκε 07/11/2018 στις 23:43
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
1

Το πρόβλημα είναι που εντάχθηκαν στο τραπέζι folderpeople μόνο μία φορά, έτσι ώστε να μην μπορεί να πάρει οποιαδήποτε σειρές. Δοκιμάστε αυτό:

select f.folderid, f.foldername, fp.peoplecode, 
p.addrcity as clientcity, p2.addrcity as sellercity 
from folder  f 
join folderpeople fp1 on fp1.folderid = f.folderid 
join people p on fp1.peopleid = p.peopleid and fp1.peoplecode = 1 
join folderpeople fp2 on fp2.folderid = f.folderid 
join people p2 on fp2.peopleid = p2.peopleid and fp2.peoplecode = 20

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

Απαντήθηκε 08/11/2018 στις 01:36
πηγή χρήστη

ψήφοι
0

Πήδηξα το όπλο - απάντηση Randy έδωσε αποτελέσματα - αλλά μου έδωσε δύο σειρές για όλους. Αλλά μου τόνισε προς τη σωστή κατεύθυνση. Όταν συνδυάζεται λύση του Randy με διάλυμα mdem7 του, βρήκα μια λύση που δούλεψε.

with sellers as (select fp.folderid, p.peopleid, fp.peoplecode, p.addrcity, 
     p.addrpostal from folderpeople fp , people p where fp.peopleid = p.peopleid and 
     fp.peoplecode = 20), 
clients as 
     (select fp2.folderid, p2.peopleid, fp2.peoplecode, p2.addrcity, p2.addrprovince, 
     p2.addrpostal, p2.namelast, p2.namefirst from folderpeople fp2, people p2  where 
     fp2.peopleid = p2.peopleid and fp2.peoplecode = 1)
select c.namelast as ClientLast, c.namefirst as ClientFirst, f.issuedate, 
     c.addrcity as "Client City", s.addrcity as "Seller City"
     from folder  f
        left join sellers s on f.folderid = s.folderid  
        left join clients c on f.folderid = c.folderid; 
Απαντήθηκε 09/11/2018 στις 15:51
πηγή χρήστη

ψήφοι
0

Υποψιάζομαι ότι θα πρέπει απλά left joins:

select f.folderid, f.foldername, fp.peoplecode, 
       p.addrcity as clientcity, p2.addrcity as sellercity 
from folder f join
     folderpeople fp 
     on fp.folderid = f.folderid left join
     people p
     on fp.peopleid = p.peopleid and
        fp.peoplecode = 1 left join
     people p2
     on fp.peopleid = p2.peopleid and fp.peoplecode = 20 ; 

Μπορείτε να πάρετε δεν σειρές, διότι fp.peoplecodeδεν μπορεί να είναι και «1» και «20» στην ίδια σειρά.

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

Απαντήθηκε 08/11/2018 στις 03:17
πηγή χρήστη

ψήφοι
0

Δοκιμάστε αυτό επιτρέψτε μου να ξέρω αν αυτό λειτουργεί.

with sellers as
  (select peopleid, addrcity from people where peoplecode = 20),
clients as 
  (select peopleid, addrcity from people where peoplecode = 1)
select f.folderid, f.foldername, fp.peoplecode, 
       c.addrcity as clientcity, s.addrcity as sellercity 
 from folder  f
 join folderpeople fp on fp.folderid = f.folderid 
 join sellers s on fp.peopleid = s.peopleid 
 join clients c on fp.peopleid = c.peopleid; 
Απαντήθηκε 08/11/2018 στις 00:08
πηγή χρήστη

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