Page 1 of 1

πρόβλημα σε query

Posted: Fri Nov 07, 2008 5:16 pm
by oldholborn
Γεια σας εχω ένα πρόβλημα σε ένα oracle query

πως μπορώ να προσθέτω πίνακες σε ένα query ανάλογα με την τιμή που παίρνει μία παράμετρος

πχ
αν η παράμετρος είναι "all" τότε

select t1.row_id from
org t1,
party t2
where t1.row_id = t2.par_row_id
And
t1.row_id = t1.branch_id

αν είναι "team" να είναι μόνο αυτό

select t1.row_id from
org t1
where
t1.row_id = t1.branch_id

help plz

Re: πρόβλημα σε query

Posted: Fri Nov 07, 2008 5:29 pm
by vasvas
Διάβασε λίγο για dynamic sql γενικά ή για prepared statements ειδικά. Εν ολίγοις, ένας τρόπος είναι ο εξής: το query σου θα το αποθηκεύεις σε ένα string, το οποίο μπορεί να είναι concat από πολλά βασικά strings. Η δομή ελέγχου του προγράμματος θα κάνει τα κατάλληλα concat για κάθε περίπτωση και θα εκτελείς το τελικό string που βγαίνει.

Re: πρόβλημα σε query

Posted: Fri Nov 07, 2008 5:58 pm
by rose

Code: Select all

string q;
if (all) {
            q = "SELECT " +
                  " a" +
                  " b FROM C";
        } else {
           
           q = " SELECT " +
                 " b" +
                  "FROM  C";
}
db.execQuery(q);


Re: πρόβλημα σε query

Posted: Fri Nov 07, 2008 6:12 pm
by oldholborn
σας ευχαριστώ πολύ για την γρήγορη απάντηση :smt023
αλλά το πρόβλημα είναι ότι
δουλεύω σε report designer δεν γράφω πρόγραμμα και για αυτό μόνο
query με select sub query case when .. τέτοια μπορώ να χρησιμοποιήσω

Re: πρόβλημα σε query

Posted: Fri Nov 07, 2008 6:24 pm
by rose
SQL procedure;

Re: πρόβλημα σε query

Posted: Sat Nov 08, 2008 12:25 am
by oldholborn
δυστυχώς ούτε αυτό γιατί η βάση είναι του siebel και το μόνο
που μπορώ να κάνω είναι να φτιάξω dataset με το query :smt017

Re: πρόβλημα σε query

Posted: Sat Nov 08, 2008 4:21 pm
by oldholborn
τελικά αυτό κατέληξα σε αυτό
το :Type είναι parameter

select *
from
( select t1.row_id
from
org t1,
where :type = "ALL" AND
t1.row_id = t1.branch_id
)
UNION
(SELECT t1.row_id
from
org t1 ,party t2
where :type = "TEAM" AND
t1.row_id = t2.par_row_id And
t1.row_id = t1.branch_id
)

:)