Jump to content
php.lv forumi

MAX() no vairākām tabulām


nemakuphp

Recommended Posts

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

Link to comment
Share on other sites

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 () :)

Link to comment
Share on other sites

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 by xPtv45z
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...