Avatar billede hkb-x Nybegynder
11. november 2008 - 21:28 Der er 11 kommentarer

flere selects i en stored procedure

Jeg arbejder for tiden en del med stored procedures i mysql og der er en ting jeg har tænkt meget over.

Hvis jeg har fundet nogle data i en forespørgsel men jeg vil kun have de specifikke data der macher et andet krav jeg ikke kan stille i den første forespørgsel hvordan gør jeg så det direkte i min procedure?
Altså hvordan udfører jeg en ny select med data fra den gamle select eller kan jeg udføre en select i en anden select?

Jeg kan selvfølgeligt godt hive mellemresultatet ud af databasen og så bare lave en ny forespørgsel til databasen men det er jo overhoved ikke optimalt.
Avatar billede arne_v Ekspert
11. november 2008 - 21:34 #1
MySQL understøtter sub queries (select inden i select).

Du kan godt udføre en nye query med data fra den første query.

Så alt er muligt.
Avatar billede arne_v Ekspert
11. november 2008 - 21:38 #2
Hvad er det du vil ?
Avatar billede hkb-x Nybegynder
11. november 2008 - 22:18 #3
Det ser ud til at være det jeg har brug for. men ser lige på det.

Jeg har bare 2 tabeller t1 og t2. Det jeg skal undersøge er om et element i t1 er i t2 da den angiver relationer mellem elementer i t1. Så jeg skal gå noget lignende t1.elm1 -> t2.elm1 => t2.em2 -> t1.eml2. Så det er lidt kringlet at få til at hænge sammen.
Avatar billede hkb-x Nybegynder
11. november 2008 - 22:33 #4
det ser ud til at være det jeg skal bruge men hvordan undersøger jeg om en værdi er en af værdierne i en subquery?
Avatar billede hkb-x Nybegynder
11. november 2008 - 22:33 #5
jeg kan jo ikke bruge =
Avatar billede arne_v Ekspert
11. november 2008 - 22:41 #6
Jeg har stadig ikke forstaaet hvad du vil.

Vildt gæt:

SELECT *
FROM t1 t1a,t2,t1 t1b
WHERE t1a.elm1=t2.elm1 AND t2.elm2=t1b.elm2
Avatar billede hkb-x Nybegynder
11. november 2008 - 22:52 #7
ok det er lidt mere komplekst. her kommer en mere nøje forklaring.

jeg har to tabeller t1 og t2. t1 har rækkerne r1, r2 og r3. t2 har rækken r1.

det jeg gerne vil have er t1.r1, t1.r3 men hvis t1.r2 findes i t2.r1 og t2.r1 er lig en værdi i t1.r2 som t1.r1 også er lig så skal t1.r3 ganges med en faktor.

er ikke helt nemt da de 2 referencer til t1.r1 ikke behøver at være ens.
Avatar billede arne_v Ekspert
12. november 2008 - 03:11 #8
rækker eller kolonner ?
Avatar billede arne_v Ekspert
12. november 2008 - 03:13 #9
Og jeg tror at du skal prøve at illustrere hvad du vil - din beskrivelse er noget svær at
gennemskue, men når man skal have flere rækker fra samme tabel i en betingelse, så
plejer en self join at være løsningen.
Avatar billede hkb-x Nybegynder
21. november 2008 - 15:42 #10
lige meget. jeg ledte efter IN eller EXISTS samt at man kan bruge CURSOR.

kast svar for point
Avatar billede arne_v Ekspert
22. november 2008 - 04:47 #11
Jeg tror jeg springer over her - jeg forstod aldrig problematikken.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester