Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  SQL - grupeerime märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
nexus4
Kreisi kasutaja
nexus4

liitunud: 01.03.2012




sõnum 23.11.2015 14:25:35 SQL - grupeerime vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
sakinaga
HV Guru

liitunud: 30.08.2006




sõnum 23.11.2015 14:41:42 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
nexus4
Kreisi kasutaja
nexus4

liitunud: 01.03.2012




sõnum 23.11.2015 15:31:18 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
randomize
HV vaatleja
randomize

liitunud: 24.05.2003




sõnum 26.11.2015 16:44:18 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
erkkih
HV vaatleja

liitunud: 13.11.2003




sõnum 28.02.2016 08:47:59 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  SQL - grupeerime
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
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.