Προς το περιεχόμενο

Αρχειοθετημένο

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

  • 0
Harkon

SQL Query

Ερώτηση

καλησπέρα σας,

 

έστω ότι έχω έναν πίνακα με τους πελάτες (ID,CNAME)

Θα ήθελα ένα sql command που να μου επιστρέφει σε ένα ROW,

τα αποτελέσματα του sql = "SELECT CNAME FROM CUSTOMER",

comma seperated.

 

Δηλαδή αντί για :

 

CNAME

---------

Νίκος

Τάκης

Γιώργος

 

να παίρνω: Νίκος,Τάκης,Γιώργος

 

υπάρχει κανείς που να γνωρίζει πως γίνεται αυτό;

 

ευχαριστώ εκ των προτέρων

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

9 απαντήσεις σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

Bspus, με μπέρδεψες. Με το query που πρότεινα, περιορίζεις τον αριθμό των ονομάτων στο "names" σε όσα θέλεις, ανάλογα τι θα δώσεις στο WHERE (και/ή LIMIT)...

 

Άλλο κατάλαβα... ;

 

Λες

SELECT GROUP_CONCAT(CNAME) AS names

 

Δεν ξερω το group concat αλλα το concat γενικως χρησιμοποιειται για να φτιαχνει 1 στρινγκ απο 2 η περισσοτερα μικροτερα στρινγκς

Εκτος αν εχω πεσει τελειως εξω στο πως θεωρησα οτι δουλευει, το query θα επιστρεψει μια στηλη, που ονομαζεται names και μια γραμμη στην οποια θα υπαρχουν ολα τα ονοματα ως ενα μεγαλο στρινγκ.

Αν αυτο εννουσε ο Harkon οκ. Εγω νομιζα οτι ηθελε το καθε ονομα σε διαφορετικη στηλη.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δεν ξερω πως να φτιαξω ενα query Που να επιστρεφει δυναμικο αριθμο απο columns, ουτε αν ειναι δυνατο κατι τετοιο. Το επομενο δυνατο βημα ειναι να ορισεις ενα query που θα σχηματιζεται δυναμικα κανοντας ενα προκαταρτικο select και καποιο loop που θα το σχηματιζει τμηματικα με βαση τα αποτελεσματα. Αυτο ομως πρεπει να γινει μεσα απο διαδικασια η συναρτηση.

 

Το πρωτο παραδειγμα που εδωσε ο Dikemou επιστρεφει μονο ενα column το οποιο αποτελειται απο ενα μεγαλο varchar (δηλαδη string)

 

Αν ο αριθμος των ονοματων ειναι δεδομενος τοτε γινεται. Δηλαδη ο αριθμος των ονοματων που επιστρεφονται, ας υπαρχουν παραπανω στη βαση δε μας πειραζει. Αλλα να σου επιστρεψει ενα συγκεκριμενο αριθμο απο columns το query. Μπορεις να ψαξεις για crosstab queries στο google και ισως βρεις μονος σου τον τροπο, διαφορετικα κατι θα βρουμε. Αν βεβαιως σε καλυπτει αυτο

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Bspus, με μπέρδεψες. Με το query που πρότεινα, περιορίζεις τον αριθμό των ονομάτων στο "names" σε όσα θέλεις, ανάλογα τι θα δώσεις στο WHERE (και/ή LIMIT)...

 

Άλλο κατάλαβα... ;

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
Bspus, με μπέρδεψες. Με το query που πρότεινα, περιορίζεις τον αριθμό των ονομάτων στο "names" σε όσα θέλεις, ανάλογα τι θα δώσεις στο WHERE (και/ή LIMIT)...

 

Άλλο κατάλαβα... ;

 

Stored Procedure/Cursors είναι σχετικά εύκολο.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

το μόνο που βρήκα ως τώρα και όχι με ένα μοναδικό sql είναι :

 

USE Northwind

DECLARE @x varchar(8000)

SELECT @x = COALESCE(@x+', ','')+ISNULL(ShipName,'') FROM ORders

SELECT @x

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

καλημέρα σας,

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
×
×
  • Δημιουργία νέου...