Jump to content
php.lv forumi

Mysql atlasīto datu LIMITēšanas problēma


Joyride

Recommended Posts

Ir tabulas PASŪTĪJUMI un POZĪCIJAS. Vienam pasūtījumam var būt apakšā viena vai vairākas pozīcijas.

 

Dati tiek atlasīti tādā veidā, ka par pamatu tiek ņemta POZĪCIJU tabula un pie tās tiek piesaistīti pasūtījumi:

 

SELECT ...
FROM positions
LEFT JOIN orders ON positions.order_id = orders.id
GROUP BY positions.id, ...
LIMIT ???

 

Un tad PHP pusē atlasītās rindas tiek sagrupētas pa pasūtījumiem.

 

Problēma ir tāda, ka vajag kaut kādā veidā dalīt pa lapām, bet nav iespējams limitēt pēc galvenās tabulas POZĪCIJAS,

jo tad ir iespēja, ka pasūtījums tiks "aprauts".

Nevaru izdomāt, kā varētu to darīt pēc PASŪTĪJUMU tabulas, teiksim atlasīt pozīcijas, kuras ir pēdējos 5 pasūtījumos.

 

Vai kāds var kaut ko ieteikt?

Link to comment
Share on other sites

1kārt neredzu nekādu vajadzību pēc LEFT JOIN - vai tiešām pozīcija var būt BEZ pasūtījuma?

2kārt nav īsti skaidrs kādā sakarā ir GROUP BY positions.id, vai tad pastāv iespēja, ka kādu pozīciju var atlasīt vairākas reizes? Un ja jā, tad kāpēc?

 

3kārt es rakstītu kaut kā tā

select * from positions
inner join (select * from orders order by ord_id desc limit 5) as ord1
on (pos_ord_id = ord_id)
order by ord_id desc, pos_id desc;

 

Tikai vajag palasīties MySQL dokumentācijā, kas notiek ja subselektos raksta LIMIT klauzas, vai MySQLs tās interpretēja korekti, šķiet, ka bija kaut kādi ierobežojumi, it sevišķi arī, ja virsselektā arī bija LIMIT.

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

1. Īsti nesapratu, ko biji domājis, bet pozīcija nevar būt bez pasūtījuma.

 

2. Nepastāv iespēja pozīciju atlasīt vairākas reizes, bet pozīcijas tiek vēl sīkāk dalītas pa darba uzdevumiem un iekraušanas uzdevumiem,

tātad beigās tas izskatās apmēram šādi: GROUP BY positions.id, aaa.du, bbb.load_task_id

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...