Jump to content
php.lv forumi

Sarežģīts vaicājums vai cits risinijājums


Dooling

Recommended Posts

Ir tabula:

 

sid | jautajums | vertejums | sadala | tips | klients | posms | gads

1 | Sakums | 0 | 0 | 1 | SIA AAA| 1 | 2007

2 | jautajums1| 0 | 2 | 1 | SIA AAA | 1 | 2007

3 | jautajums2| 0 | 2 | 1 | SIA AAA | 1 | 2007

4 | Galvena | 0 | 0 | 1 |SIA AAA | 1 | 2007

5 | jautajums1| 0 | 2 | 1 | SIA AAA | 1 | 2007

6 | jautajums2| 0 | 2 | 1 |SIA AAA | 1 | 2007

7 | Beigas | 0 | 0 | 1 | SIA AAA | 1 | 2007

8 | jautajums1| 0 | 2 | 1 | SIA AAA | 1 | 2007

9 | jautajums2| 0 | 2 | 1 | SIA AAA | 1 | 2007

....

16 | Sakums | 0 | 0 | 1 | SIA AAA | 2 | 2007

17 | jautajums1| 0 | 2 | 1 | SIA AAA | 2 | 2007

18 | jautajums3| 0 | 2 | 1 | SIA AAA | 2 | 2007

19 | Galvena | 0 | 0 | 1 | SIA AAA | 2 | 2007

20 | jautajums3| 0 | 2 | 1 |SIA AAA | 2 | 2007

21 | jautajums4| 0 | 2 | 1 | SIA AAA | 2 | 2007

 

Vai ar vienu vaicājumu var panākt šādu rezultātu?

 

sid | jautajums | vertejums | sadala | tips | klients | posms | gads

1 | Sakums | 0 | 0 | 1 | SIA AAA | 1 | 2007

2 | jautajums1| 0 | 2 | 1 | SIA AAA | 1 | 2007

3 | jautajums2| 0 | 2 | 1 | SIA AAA | 1 | 2007

18 | jautajums3| 0 | 2 | 1 | SIA AAA | 2 | 2007

4 | Galvena | 0 | 0 | 1 | SIA AAA | 1 | 2007

5 | jautajums1| 0 | 2 | 1 | SIA AAA | 1 | 2007

6 | jautajums2| 0 | 2 | 1 | SIA AAA | 1 | 2007

20 | jautajums3| 0 | 2 | 1 | SIA AAA | 2 | 2007

21 | jautajums4| 0 | 2 | 1 | SIA AAA | 2 | 2007

7 | Beigas | 0 | 0 | 1 | SIA AAA | 1 | 2007

8 | jautajums1| 0 | 2 | 1 | SIA AAA| 1 | 2007

9 | jautajums2| 0 | 2 | 1 | SIA AAA | 1 | 2007

...

Vai kādam skaidra ideja? Ja nē, tad detalizētāk izklāstīšu vakarā.

Link to comment
Share on other sites

Kurā vietā glabā jautājuma piederību sadaļai?

 

Pieņemsim, ka "sadala" un "tips" = 0 ir grupas tips. Doma šāda -

 

SELECT * FROM <table> ORDER BY IF(tips = 0, sid, sadala) ASC, IF(tips = 0, 0, 1) ASC, sid ASC

 

P.S. Ja izmanto db, kurā nav IF funkcijas nāksies to aizstāt ar analogu.

P.S. Lieliem datu apjomiem neiesaku - ja db nepieļauj taisīt indeksus uz tādām lietām kā "IF(tips = 0, sid, sadala)", tad tas konkrēti noslogos db.

Edited by GedroX
Link to comment
Share on other sites

Laukam sadaļa vertība 0 - domāta kā sadaļa, 1 - apakšsadaļa, 2 - jautājums.

 

Ir izveidotas divas anketas, kuras atšķiras nedaudz, bet man apvienot kā vienu, t.i,

 

Pirmajā anketā eksistē tāda sadaļa kā Sakums un tajā ir jautajumi: jautajums1 un jautajums2 un tā pieder pirmajam posmam,

bet otrajā anketā eksistē arī sadaļa Sakums un jautajumi: jautajums1 un jautajums3 un tā pieder otrajam posmam.

 

tad beigu rezultātam apvienojot šos abus posmus vajadzētu būt šādam:

 

Sakums

jautajums1

jautajums2

jautajums3

Edited by Dooling
Link to comment
Share on other sites

Tātad jautājuma piederība sadaļai ir noteikta izmantojot secību tabulā? Pēc sekojošiem id??? Tev jāpamācās par db dizainu.

 

Ja lieto db, kurā ir definējamas funkcijas, tad tas maybe būs daudz-maz vienkārši izdarāms, bet savādāk - izmanto PHP vai arī pārkonvertē datus. Izveido sadaļu tabulu utml.

Edited by GedroX
Link to comment
Share on other sites

×
×
  • Create New...