FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
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. |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Bara ett inlägg till!
|
Kod:
LIKE CONCAT('%(', m.id, ')%') |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Citat:
"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)? |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
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? |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Bara ett inlägg till!
|
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? |
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
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? |
||
![]() |
![]() |
Svara |
|
|