10. juni 2004 - 23:26Der er
13 kommentarer og 1 løsning
Problem med subquery i from betingelse
Davs...
Jeg forsøger at lave følgende query: select * from (select name from runeRent)
men får følgende fejl: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select name from runeRent)' at line 1
Hvad gør jeg galt??? Benytter forresten mysql version 4.0.
Ja normalt kan man opnå samme resultat med en snedig JOIN.
Hvis du forklarer hvad du vil så kan jeg prøve at skitsere en alternativ løsning (jeg tillader mig at formode at " select * from (select name from runeRent" kun var for at illustere subquery).
->Hvis du forklarer hvad du vil så kan jeg prøve at skitsere en alternativ løsning (jeg tillader mig at formode at " select * from (select name from runeRent" kun var for at illustere subquery). Det har du ret i.. :)
Jeg har to tabler, den ene indeholder en del informationer om et elementer og den anden indeholder informationerne om nogle bruger. I den først har jeg et brugerID som matcher et id-felt i den anden. Dette id er unikt. Jeg vil da have at brugerID?et bliver slået op i den anden tabel for derefter at returnere navnet på den pågældende bruger. Denne information skal så kombineres med en select fra den første tabel.
Har forstillet mig følgende: (ved godt at den ikke virker i version 4.0) select ... (select tabel2 from user where id = item.username) from tabel1 AS item where ? orderBy .. limit ...
Med hensyn til join, er det så natural join du tænker på???
jo, det har i, det virker dog kun næsten... Jeg bruger følgende sætning:
select item.id, item.title, item.year, item.company, item.type, item.rentetBy, if item.rentetBy>0 then rent.name end if from runeItem as item, runeRent as rent if item.rentetBy>0 then where item.rentetBy = rent.id end if
Men jeg har lidt problemer med if-strukturen, ved du hvordan de skal dannes???
Skal lige nævnes at rækken rentetBy indeholder 0, hvis den ikke peger på et id et bruger tablen og ellers id nummeret.
Hvis jeg bruger: WHERE item.rentetBy <= 0 then OR item.rentetBy = rent.id, får jeg dannet krydsproduktet af de to tabler og får paret rentetBy med id og får det rigtige name. Men de steder hvor rentetBy = 0, optræder da 2 gange idet de bliver paret med de element i runeRent tablen (2 elementer heri). Kan du fjerne disse "duplikater", der er ens pånær deres name felt.
beklærer, hvis jeg ikke har forklaret mig tydlig nok...
Problemstilling består i at jeg har to tabler item og rent. I item har jeg en kolonne rentetBy der indeholder et tal, der matcher et id i rent tablen, hvis den er lånt ellers indeholder den 0. Så det jeg forsøger at gøre er at lave en select der henter næste alle element ud af item tablen og samtidig henter navnet fra rent tablen udfra hvilken værdi der står i rentetBy kolonnen. Dvs. hvis den indeholder 2, så hentes navnet på brugeren med id=2 og tilføjes til de andre elementer (dvs de værdier der hentes fra item tablen). F.eks hvis der står name=Shrek, producent=DreamWorks, rentetBy=2 i item tablen og id=2, name=hans i rent tablen, så skal den resultere med name=Shrek, producent=DreamWorks, rentetBy=2 og name=Hans.
Det ser skam ud til at virke, tak skal du have for hjælpen.... :) Den have jeg vist ikke prøvet....
Synes godt om
Ny brugerNybegynder
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.