Kom ihåg mig?
Home Menu

Menu


Söka med mysql's egna variabler

Ämnesverktyg Visningsalternativ
Oläst 2012-06-25, 17:58 #1
linus1 linus1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 70
linus1 linus1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 70
Question Söka med mysql's egna variabler

Hej,

Har följande query:

select u.id from menu m, userroles u where m.group_id = '$group_id' && m.name = 'service_do_service' && u.pages LIKE %(m.id)%

Det är den sista biten jag har problem med... jag får inte till det att söka i "u.pages" med %m.id%.

Vad ska jag skriva där ?

Tack på förhand.
linus1 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-06-25, 18:05 #2
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Kod:
LIKE CONCAT('%(', m.id, ')%')
Men tänk på att detta är rätt långsamt. Jag tycker det ser ut som att du valt att spara flera värden i ett enda fält, något relationsdatabasmodellen inte är tänkt för. Du strider mot första normalformen
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-06-25, 18:09 #3
linus1 linus1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 70
linus1 linus1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 70
Citat:
Ursprungligen postat av emilv Visa inlägg
Kod:
LIKE CONCAT('%(', m.id, ')%')
Men tänk på att detta är rätt långsamt. Jag tycker det ser ut som att du valt att spara flera värden i ett enda fält, något relationsdatabasmodellen inte är tänkt för. Du strider mot första normalformen
Tack för svaret!

"Du strider mot första normalformen" förstår jag inte..?


i userroles->pages är det en massa sidor som du får tillgång till genom att sidans "menu"-id är inlagd där med : som separator.

Har du något bättre förslag att lösa det (utan att skapa en kolumn för varje sida i userroles)?
linus1 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-06-25, 18:19 #4
linus1 linus1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 70
linus1 linus1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 70
Standard Test

Testade nu:

select u.id from menu m, userroles u where m.group_id = '1' && m.name = 'service_do_service' && u.pages LIKE CONCAT('%(', m.id ,')%')

Dock resulterar det i 0 rader. byter jag ut m.id till 13 (id:t som den ska köra där) så träffar jag två rader.

Något som har ett förslag?
linus1 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-06-25, 18:30 #5
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
För att din databasdesign ska uppfylla första normalformen krävs att du bara lagrar ett värde per fält. Genom att bryta mot denna regel gör du det svårt för dig själv att skapa vettiga SQL-frågor. Rätt sätt att skapa en många-till-många-relation är att skapa en till tabell där varje rad kopplar en rad i den ena tabellen till en rad i den andra. Sedan JOIN:ar man alla tre.

Med din nuvarande design kan databasmotorn inte optimera frågan överhuvudtaget. Har du många radera i någon av tabellerna kan du få potentiellt horribel prestanda. Med en normaliserad design kan MySQL lätt använda eventuella index och annat. Dessutom är en heltalsjämförelse betydligt billigare än en LIKE-jämförelse.

Jag förstår dock inte varför du inte får någon träff med mitt förra svar. Kan det vara på grund av parenteserna? Har du parenteser i fältet? Kan du visa ett utdrag ur båda tabellerna?
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-06-25, 18:48 #6
linus1 linus1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 70
linus1 linus1 är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 70
Då ska vi se..

bild 2-3: Min nuvarande databas.

bild 1: Detta systemet vill jag inte ha,.

bild 4: är det så här du menar med "ditt" system?
Bifogade bilder
Filtyp: jpg 1.jpg (6.0 KB, 8 visningar)
Filtyp: png 2.PNG (17.0 KB, 14 visningar)
Filtyp: jpg 3.jpg (15.4 KB, 15 visningar)
Filtyp: jpg 4.jpg (11.5 KB, 16 visningar)
linus1 är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017