Nem látható ALIAS létrehozása
Sziasztok!
Szükségem lenne valami ilyesmire:
SELECT ID, Name, (ID -1) AS id2 from tabla1 WHERE id2 >1
Azt tudom, hogy ezt így nem lehet megcsinálni, mert mező ALIAS nem lehet a WHERE-ben.
Ezért egy kiskaput használok:
SELECT ID, Name, (ID -1) AS id2 from tabla1 HAVING id2 >1
Bár nem tudom, hogy ez lassít, vagy sem a lekérdezésen.
(természetesen az (ID -1) egy bonyolultabb kifejezés és egy joint-ból következik, ezért nem tudok hivatkozni rá csak így. Most nem részletezném miért…)
A problémám viszont az ezzel, hogy ennek a SELECT-nek az eredményét egy másik SELECT-ben szeretném felhasználni.
SELECT * from tabla2 where id in(SELECT ID, Name, (ID -1) AS id2 from tabla1 HAVING id2 >1)
Viszont itt szerepelnek azok az ALIAS-ok amik itt már nem kellenének.
Hogy lehet ezt kiküszöbölni?
Üdv:
Zoli
■ Szükségem lenne valami ilyesmire:
SELECT ID, Name, (ID -1) AS id2 from tabla1 WHERE id2 >1
Azt tudom, hogy ezt így nem lehet megcsinálni, mert mező ALIAS nem lehet a WHERE-ben.
Ezért egy kiskaput használok:
SELECT ID, Name, (ID -1) AS id2 from tabla1 HAVING id2 >1
Bár nem tudom, hogy ez lassít, vagy sem a lekérdezésen.
(természetesen az (ID -1) egy bonyolultabb kifejezés és egy joint-ból következik, ezért nem tudok hivatkozni rá csak így. Most nem részletezném miért…)
A problémám viszont az ezzel, hogy ennek a SELECT-nek az eredményét egy másik SELECT-ben szeretném felhasználni.
SELECT * from tabla2 where id in(SELECT ID, Name, (ID -1) AS id2 from tabla1 HAVING id2 >1)
Viszont itt szerepelnek azok az ALIAS-ok amik itt már nem kellenének.
Hogy lehet ezt kiküszöbölni?
Üdv:
Zoli
Sorold fel az oszlopokat
Na. A megoldás egyszerű, sorold fel a külső select-ben azokat az oszlopokat amiket le akarsz kérdezni és kész.
Válasz
A külső select-be tudom, hogy azt írjam be amit szeretnék, viszont ha jól tudom a "ID IN ()" miatt a belső select-nek csak egy oszlopos kimenete lehet alapban, hogy tudja, hogy melyik mezőt szeretném felsorolásként használni.
Tehát vagy el kellene ezért a belső select felesleges alias-ait rejteni, vagy hogy lehet ilyenkor megoldani, hogy az "ID" a hasznos adat és nem a "Name" vagy az "id2".
Üdv:
Zoli
Félreértettem
Köszi
Ki fogom próbálni.
Arról van esetleg információd, hogy azzal, hogy HAVING-et használok mennyivel lesz lassabb a kérés?
Azért kérdem, mert ugye azt írják, hogy WHERE azért nem használható, mert akkor még nem jönnek létre a mezők mikor szűr.
Nekem pedig a táblám nagyon nagy lenne.
Üdv:
Zoli
Mérni kell