Avatar billede Slettet bruger
26. maj 2005 - 12:08 Der er 9 kommentarer og
1 løsning

Søgnings syntax.

Jeg sidder og laver en søge funktion, men kan ikke lige se hvordan min syntax skal være til følgende.

Jeg har følgende:

SELECT site.name, release.rls, release.id, releaseref.siteid, releaseref.rlsid
FROM ".$table[0]." release, ".$table[0]."_ref releaseref, sites site
WHERE release.rls $search AND release.id = releaseref.rlsid AND site.id = releaseref.siteid
GROUP BY release.rls
ORDER BY release.rls ASC

$search indeholder LIKE '%".addslashes($word)."%'

Mit tabel kunne se sådan ud:

rls: (ur, ur, ur, bælte)
name: (rolex, candino, unknown, addidas).

Lad os sige at vores søgeord ville finde alle i rls.
Så ser mit resultat ud sådan nu:

ur - rolex
ur - candino
ur - unknown
bælte - addidas

Dette bliver til 4 record ud af mine 20.
Jeg vil gerne have mit resultat som følgende:

ur - rolex, candino, unknown
bælte - addidas

Og det så kun gælder for 2 record.

Men hvordan klare jeg den?
Avatar billede barklund Nybegynder
26. maj 2005 - 12:14 #1
Hvilken mysql-version har du?
Avatar billede arne_v Ekspert
26. maj 2005 - 12:17 #2
det ligger ikke til SQL at lave komma separerede værdier på den måde

behold din SQL og lad din PHP kode outputte resultatet som du vil have

tricket er i din while løkke at sammenligne den første kolonne og så gøre noget
forskelligt alt efter om det er samme værdi som sidst eller ej
Avatar billede barklund Nybegynder
26. maj 2005 - 12:27 #3
Med MySQL 4.1 er der kommet en GROUP_CONCAT aggregate function, der kan gøre det lidt derhenaf - den er faktisk meget nice :)

--
Morten Barklund
Avatar billede arne_v Ekspert
26. maj 2005 - 12:33 #4
den kendste jeg ikke - snedigt
Avatar billede Slettet bruger
26. maj 2005 - 12:35 #5
heh de ligger heller ikkke komma separerede :)
Det var blot for visningens skyld. Men burde måske have brugt |

jeg kan sagtens lade phpén arbejde.
Men så har jeg stadig et problem med at jeg skal have 20 forskellige udtræk, og ikke 4 record der viser f.eks. produktet ur, blot fordi det er forskellige mærker.

Synes ikke helt jeg kan få den group_concat til at virke.
Avatar billede barklund Nybegynder
26. maj 2005 - 13:44 #6
Jeg er stadig ikke med på, hvad du rent faktisk vil opnå, og hvordan dine tabeller og deres præcise data ser ud. Kom med et tabeldump af struktur og data samt et ønsket resultat - så skal vi nok finde smarteste metode til at opnå det ønskede :)
Avatar billede Slettet bruger
26. maj 2005 - 15:19 #7
Well det jeg egentlig har er to tabeller hvor den ene indeholder produkter og den anden indeholder mærker.
Jeg ville så gerne have at ud for hver produkt stod hvilke mærker det findes i.
Men når det er forskellige ting jeg henter i samme udtræk tager den det jo som forskellige resultater, hvis mit array eksempelvis indeholder ur og rolex og næste gang ur og candino.

Men jeg fik det løst ved først at hente produkter, og derefter smide det igennem noget php der fandt mærkerne.

Men jeg vil dog stadig gerne tildele dig nogle points barklund for nu lærte jeg da lidt omkring den GROUP_CONCAT :)
Avatar billede barklund Nybegynder
26. maj 2005 - 16:44 #8
GROUP_CONCAT ville netop være oplagt her - hvis du altså har MySQL 4.1.

Men okay, at du fik det løst alligevel :)

Det kunne dog lige så let klares, som arne_v foreslår - blot ved at sørge for, at alle ens produkter kommer efter hinanden ved at sortere efter dem :)

--
Morten Barklund
Avatar billede Slettet bruger
26. maj 2005 - 18:17 #9
Jeps, må lige få opdateret min MySQL :)
Men jeg takker af for denne gang.
Avatar billede barklund Nybegynder
26. maj 2005 - 19:13 #10
Fin fin - tark for points :)
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