nemakuphp Posted May 24, 2012 Report Share Posted May 24, 2012 Ir 3 tabulas items id | name 1 | Test 2 | Name items_users user_id | item_id | action1 | action2 1 | 1 | 0 | 1 2 | 1 | 1 | 1 1 | 2 | 1 | 0 items_groups group_id | item_id | action1 | action2 1 | 1 | 1 | 1 2 | 1 | 1 | 0 items_users un items_groups tabulās pie viena item_id var būt vairāki ieraksti, action1 un action2 ir vai nu 1 vai 0 Vai ir iespējams vienā kverijā iegūt apmēram sekojošo rezultātu, norādot user_id un iespējamos group_id? (pieņemsim, ka user_id = 1, un lietotājs ir grupā 2 id | name | action1 | action2 1 | Test | 1 | 1 (Respektīvi tiek paņemta lielākā vērtība vai nu no grupas vai lietotāja) 2 | Name | 1 | 0 Quote Link to comment Share on other sites More sharing options...
briedis Posted May 24, 2012 Report Share Posted May 24, 2012 Es nezinu vai tas būs efektīvākais veids un vai vispār strādās, bet iztēlojos, ka varētu lietot UNION un tad no apakšvaicājuma izvilkt MAX, piemēram SELECT MAX(col) FROM ( SELECT col1 AS col FROM table1 WHERE .. UNION SELECT col2 AS col FROM table1 WHERE .. UNION SELECT colX AS col FROM table2 WHERE.. ) ..vai arī izvelc no katras tabulas MAX apakšvaicājumā, un tad no šiem max izvelc vēl vienu MAX () :) Quote Link to comment Share on other sites More sharing options...
nemakuphp Posted May 24, 2012 Author Report Share Posted May 24, 2012 Pagaidām ienāca prātā labāks risinājums, tās 2 tabulas aizstāt ar vienu, papildus norādot tas ir lietotājs vai grupa, laikam arī pie šī varianta palikšu Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted May 24, 2012 Report Share Posted May 24, 2012 (edited) Es veidotu kaut kā šādi, pēc tam attiecigi pārbaudītu lielāks par/vienāds ar 0. SELECT SUM(items_groups.action1 + items_users.action1) as action1, ... FROM items LEFT JOIN items_groups ... LEFT JOIN items_users ... GROUP BY items.id Ja SUM tādā veidā nedarbojas var arī mēģināt kā SUM(items_groups.action1) + SUM(items_groups.action1) as action1 Edited May 24, 2012 by xPtv45z Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.