Sziasztok!
Szeretnék készíteni egy táblát, ami a lekérdezés feltételének függvényében ad vissza egy sort. :) nyilván ez mindig így van, de ha pl. ez a lekérdezés:
SELECT user, dir FROM fake_table WHERE user = 'john';
akkor az eredmény:
user | dir
------------
john | john_dir
és bármelyik user-t kérdezzük le mindig ennek analógiájára adja vissza az eredményt. A userekről nem tudunk semmit, nincs róla nyilvántartás.
Muszáj valamilyen "fake table"-szerű megoldás, mert a lekérdezés formátumába nem tudok belenyúlni.
- 1176 megtekintés
Hozzászólások
Nem értem, hogy mit akarsz. Tábla sosem ad vissza sort, de még aprópénzt sem.
Az a lényeg, hogy az eredmény az legyen, hogy
jozsi jozsi_dir
?
- A hozzászóláshoz be kell jelentkezni
Igen, ezt szeretném eredménynek.
- A hozzászóláshoz be kell jelentkezni
Szerintem te view-t akarsz csinálni...
CREATE VIEW fake_table as SELECT ...
Aztán már mehetnek a query-k a fake_table-ra.
- A hozzászóláshoz be kell jelentkezni
SELECT user, user || '_dir' AS dir FROM users WHERE user = 'john'
De erre valók a nézetek:
CREATE VIEW userDirs AS SELECT user, user || '_dir' AS dir FROM users
SELECT * FROM userDirs WHERE user = 'john'
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Úgy látom még nem értitek teljesen.
Nem tudni, hogy mi lesz a user értéke. Bármi lehet. Ha ez a lekérdezés: SELECT user, dir FROM fake_table WHERE user = 'julcsi'; akkor "julcsi, julcsi_dir" kéne legyen az eredmény. De julcsi helyett BÁRMI előfordulhat.
- A hozzászóláshoz be kell jelentkezni
Csucsukám, szerintem picit csiszolj a stílusodon, mert így nem fogsz messzire jutni.
Azt nem úgy mondják, hogy "Úgy látom még nem értitek teljesen", hanem úgy, hogy "Úgy látszik, még nem sikerült világosan elmagyaráznom (de legalábbis mindenki szembe jön az autópályán)".
Egyébként elég furcsa dolgot szeretnél, gyanítom, hogy rossz irányba haladnak a gondolataid, de ha neked ez kell, akkor:
select 'foo','foo_dir';
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Elnézést mindenkitől, akit megbántottam volna, nem volt szándékomban senkit se lekezelni vagy lenézni.
styg: Akkor, hogy úgy mondjam szeretném érthetőbben elmagyarázni:
adott egy kész program, amiben szerepel egy bedrótozott lekérdezés: "SELECT user, dir FROM users WHERE user = ?" - ezen nem tudok változtatni. Azt szeretném, hogy a program bármilyen felhasználónevet kérdez le az eredményt a fenti analógiára kapja.
- A hozzászóláshoz be kell jelentkezni
erre való a VIEW
"A fejlesztot azert fizetik, hogy oldja meg a problemat. Ez egy kemeny szakma." - Chain-Q
- A hozzászóláshoz be kell jelentkezni
Namost a view-l szerintem az lesz a probléma, hogy az adatbázis-kezelők a view resultset-jére szűrnek rá a where-ben megadott feltételekkel.
Ezt szerintem tárolt eljárással lehet megoldani, pl. úgy, hogy készít egy olyan tárolt eljárást, ami ugyanolyan a resultset-t ad vissza, mint amilyen a tábla, de még akkor is be kell adni a tárolt eljárásnak paraméterbe, hogy mit akar visszakapni.
Szóval valami ilyesmi lesz belőle:
SELECT user, dir FROM user('blabla') WHERE user = 'blabla';
CREATE FUNCTION fake_users(VARCHAR)
RETURNS SETOF users AS $$
SELECT $1::VARCHAR AS user, $1 || '_dir' as dir
$$ LANGUAGE SQL;
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
Igy megoldhatod:
http://developer.postgresql.org/pgdocs/postgres/xfunc-sql.html
- A hozzászóláshoz be kell jelentkezni
Szia,
igen, mindenképp pl/pgsql-ben kell megcsinálni, csak eddig a where mögül nem sikerült kiszednem az értéket.
köszi
- A hozzászóláshoz be kell jelentkezni
Onnan nem is fogod tudni. Ld. feljebb.
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
+1
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni