praegune kellaaeg 19.06.2025 00:52:05
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
nexus4
Kreisi kasutaja

liitunud: 01.03.2012
|
23.11.2015 14:25:35
SQL - grupeerime |
|
|
Tervitus, ei oska sõnastada mida tarvis ning seetõttu on ka googeldamine keerukas.
Selline Data, 2 veergu:
Grupp Liikmed
1 A
1 B
1 C
2 A
3 B
3 C
4 A
4 B
4 C
4 D
5 B
5 C
5 D
6 A
7 C
7 D
Unikaalseid liikmeid on fikseeritud arv, antud näites 4: A, B, C, D. Liikmetest võimalik koostada erinevaid gruppe, liikmete arv grupis pole määratud, kuid iga liige saab ühes grupis esineda vaid ühe korra, seega antud näites üle 4 liikmelist gruppi pole võimalik moodustada.
Nüüd tahaks lisada ühe veeru kus oleks selle grupi kõige tähtsam liige, reeglistik midagi sellist:
Kui grupis vähemalt üks A, siis VIP A
Kui grupis A puudub ja vähemalt üks B, siis VIP B
Kui grupis A ja B puudub ja vähemalt üks C, VIP C
Kui grupis A, B ja C puudub ja vähemalt üks D, siis VIP D
Soovitud tulemus, 3 veergu:
Grupp Liikmed VIP
1 A A
1 B A
1 C A
2 A A
3 B B
3 C B
4 A A
4 B A
4 C A
4 D A
5 B B
5 C B
5 D B
6 A A
7 C C
7 D C
Edit// Kui annaks liikmete nimedele numbrid ja võtaks max(liikmed) as vip group by grupp ?
viimati muutis nexus4 23.11.2015 14:48:49, muudetud 2 korda |
|
Kommentaarid: 29 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
26 |
|
tagasi üles |
|
 |
sakinaga
HV Guru
liitunud: 30.08.2006
|
23.11.2015 14:41:42
|
|
|
Miks sa seda kõike ühes tabelis teha tahad? Kas loogika peab olema SQL serveri poolne või rakendusepoolne? Mis SQL serverit kasutatakse?
_________________ Tsensuur HinnaVaatluse foorumis |
|
Kommentaarid: 159 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
151 |
|
tagasi üles |
|
 |
nexus4
Kreisi kasutaja

liitunud: 01.03.2012
|
23.11.2015 15:31:18
|
|
|
Ei ei, ärge laske mu kirjeldusel enda mõtteid kasti panna, mul on võimalik kõiksugu asju sooritada (uued tabelid, view'd) - tulistage ideid
Edit// Sain mis vaja - Kui annaks liikmete nimedele numbrid ja võtaks max/min(liikmed) as vip group by grupp - andis soovitud tulemi
|
|
Kommentaarid: 29 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
26 |
|
tagasi üles |
|
 |
randomize
HV vaatleja

liitunud: 24.05.2003
|
26.11.2015 16:44:18
|
|
|
Vastus siin, kõige ilusam ei saanud
http://sqlfiddle.com/#!9/b9500/27
Tegin eraldi tabeli, kus on defineeritud liikmete järjekord mida väiksem rank, seda tähtsam).
Selleks et aru saada, soovitan hakata seest poolt väljapoole harutama. Et kõigepealt vaadata kõige sisemist päringut, panna see käima.
Siis järgmist päringut jne.
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
erkkih
HV vaatleja
liitunud: 13.11.2003
|
28.02.2016 08:47:59
|
|
|
Eeldusel, et member välja tähtsus on tähestikulise järjekorraga seoses, siis saaks ühe tabeliga ka VIP väärtuse leida, sqlfiddles tuleb sama tulemus ka sellise päringuga:
select
m.group_id,
m.member,
(select min(n.member) from membership n
WHERE n.group_id = m.group_id) as vip
from membership m |
|
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|