Avatar billede Slettet bruger
26. marts 2011 - 22:36 Der er 9 kommentarer og
2 løsninger

Flere records i én select ?

Sagen er den at jeg har to tabeller som samler data om et "objekt".

Tabellen Main indeholder "stamdataene" som alle objekter deler:
~ iD, navn, gruppe, pris, leverandør..

Tabellen Meta indeholder et ukendt antal "bløde data" ~ iD, name, value. F.eks. 3:
~ iD, "Cool", "Nej"
~ iD, "Giftig", "Ja"
~ iD, "SpecialImport", "Ja"

Drømmen er at hente stamdata + alle metadata (evt "concateneret") i ét hug, i stedet for først stamdata, og derefter en ekstra loop der henter metadata, en af gangen.

Er det overhovedet muligt ?
Avatar billede emfr08ab Nybegynder
26. marts 2011 - 22:44 #1
Er det ikke noget i retning af:

SELECT * FROM Main INNER JOIN Meta ON Main.iD=Meta.iD

Alternativt kan du bare bruge:

SELECT * FROM Main, Meta WHERE Main.iD = Meta.iD

Men i sidstnævnte henter du iD kolonnen to gange.
Avatar billede Slettet bruger
27. marts 2011 - 09:42 #2
Ja, jo.. men..
Problemet er jo, at der ligger mere end en Meta for hver Main. Og jeg vil ha' dem allesammen.
Avatar billede emfr08ab Nybegynder
27. marts 2011 - 13:14 #3
Du får da også dem alle, og kan få adgang til alt data i en løkke.

Prøv det :)
Avatar billede emfr08ab Nybegynder
27. marts 2011 - 13:16 #4
Det du vil hente er en tabel, der ser således ud:

iD, navn, gruppe, pris, leverandør, name, value
Avatar billede Slettet bruger
27. marts 2011 - 13:54 #5
Ja, det har du ret i, sorry.

Det jeg ville opnå var noget lignende SUM(), som jo "samler" data fra flere records i ét output
- men det kan man nok ikke med streng-data : )
.. eller hvad..
Avatar billede emfr08ab Nybegynder
27. marts 2011 - 14:14 #6
Jeg tror ikke jeg forstår, hvad du mener, med din sidste besked.

Men dit oprindelige problem var vel den ekstra løkke. Den burde være overflødig med SQL-sætningerne, jeg skrev.

Lægger SUM() ikke bare tal sammen fra en kolonne? Så en kolonne med 2, 7 og 5 bliver med SUM() 14.
Avatar billede Slettet bruger
27. marts 2011 - 15:08 #7
Aha!
Der FINDES faktisk noget som ligner SUM() for strenge: GROUP_CONCAT( kolonne, separator)
http://mahmudahsan.wordpress.com/2008/08/27/mysql-the-group_concat-function/

Kombineret med din #1, tror jeg faktisk det KAN lade sig gøre (har endnu ikke prøvet)
Avatar billede Slettet bruger
27. marts 2011 - 15:17 #8
Avatar billede emfr08ab Nybegynder
27. marts 2011 - 16:37 #9
Ok. Så forstår jeg, hvor du ville hen. Godt det lykkedes :)
Avatar billede Slettet bruger
27. marts 2011 - 17:16 #10
Lad os dele pointene - din #1 er jo korrekt - og dén del skal jeg også bruge. Så tak for det!

- Smid et svar under dette, ikk'
Avatar billede emfr08ab Nybegynder
27. marts 2011 - 17:20 #11
ok :)
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