WebHU - Programozási kérdések és válaszok

megpróbál új oszlopot szerezni igen, nem értékkel

Két asztalom van:

  1. előválogatott mappák oszlopokkal (mappaazonosító, mappanév, felhasználói azonosító)
  2. a listán szereplő felhasználók oszloppal (mappaazonosító, shortlisteduserid) a mappaazonosítóval vannak összekapcsolva

A következő lekérdezést használom, hogy lekérjem az 50-es felhasználói azonosítóval létrehozott mappák listáját, és megszámoljam, hogy az 50 kiválasztotta hány felhasználót az egyes mappákban

select a.folderid,a.foldername,count(b.ShortlistedUserId) as [count]
from tblshortlistfolders a left outer join tblshortlistedusers b on a.folderid=b.folderid 
where a.userid = 50
group by a.folderid,a.foldername

most még egy oszlopot szeretnék hozzáadni ehhez az eredményhez, amelynek értékei az egyes sorokhoz a következők lesznek

  1. ha a mappaazonosító 49-et tartalmaz a tblshortlistedusers felhasználói azonosítójában, akkor value = 'yes'
  2. ha a mappaazonosító nem tartalmaz 49-et a tblshortlistedusers felhasználói azonosítójában, akkor érték = 'nem'

de amikor valahogy alkalmazom ezt a feltételt, az oszlopok száma nem mutat megfelelő értéket, és az eredmény nem lesz mappák szerint csoportosítva. több sor jelenik meg az eredményben ugyanahhoz a mappához.

hogyan kapjuk meg a kívánt táblázat eredményét (mappaazonosító, mappanév, összszám, 'új oszlop')

25.01.2012

Válaszok:


1

Segítene, ha megmutatná a kérdését, hogy megpróbálta. Szerintem ez azt csinálja, amit akarsz: (emlékezetből)

select a.folderid,a.foldername,count(b.ShortlistedUserId) as [count]
,case when count(case when b.ShortlistedUserId=49 then 1 else null end)>0 then 'Yes' else 'No' end as [NewColumn]
from tblshortlistfolders a left outer join tblshortlistedusers b on a.folderid=b.folderid 
where a.userid = 50
group by a.folderid,a.foldername

SZERKESZTÉS: Lehet, hogy félreértem az adatait. Íme egy teljes példa néhány mintaadattal:

use tinker -- or whatever test db you have.

CREATE TABLE tblshortlistfolders (
 folderid     INT NOT NULL primary key
,foldername   NVARCHAR(255)
,userid       INT NOT NULL
);

CREATE TABLE tblshortlistedusers (
 folderid            INT NOT NULL
,shortlisteduserid   INT NOT null
,constraint fk_tblshortlistedusers_folderid foreign key (folderid) references [dbo].[tblshortlistfolders]
);

INSERT INTO tblshortlistfolders VALUES ( 100 , 'one'   ,  1); -- created by user 1
INSERT INTO tblshortlistfolders VALUES ( 200 , 'two'   , 50); -- created by user 50
INSERT INTO tblshortlistfolders VALUES ( 300 , 'three' , 50); -- created by user 50
INSERT INTO tblshortlistfolders VALUES ( 400 , 'four'  , 49); -- created by user 49

INSERT INTO tblshortlistedusers VALUES ( 100,  1); -- shortlisted by 50
INSERT INTO tblshortlistedusers VALUES ( 100, 50); -- shortlisted by 01 too
INSERT INTO tblshortlistedusers VALUES ( 200, 50); -- shortlisted by 50
INSERT INTO tblshortlistedusers VALUES ( 200, 49); -- shortlisted by 49 too
INSERT INTO tblshortlistedusers VALUES ( 300, 50); -- shortlisted by 50
INSERT INTO tblshortlistedusers VALUES ( 300, 50); -- shortlisted by  1 too

SELECT a.folderid,a.foldername,COUNT(b.ShortlistedUserId) AS [COUNT]
,CASE WHEN COUNT(CASE WHEN b.ShortlistedUserId=49 THEN 1 ELSE NULL END)>0 THEN 'Yes' ELSE 'No' END AS [NewColumn]
FROM tblshortlistfolders a LEFT OUTER JOIN tblshortlistedusers b ON a.folderid=b.folderid 
WHERE a.userid = 50
GROUP BY a.folderid,a.foldername

Ez az, amit a kérdésedből megértettem. esetleg tudnál példát mondani, hogy mit szeretnél?

25.01.2012
  • még én is így csinálom, de a probléma az, hogy a mappában lévő felhasználók száma mindig nulla, ami nem tartalmazza a 49-es felhasználót. A 49-es felhasználói azonosítót tartalmazó mappa pedig a benne lévő összes felhasználó helyes számát mutatja .. :( 02.02.2012
  • Kérjük, tekintse át az általam adott mintát, és tudassa velünk, miben tér el ez a várttól? 02.02.2012

  • 2
  • A b táblázatban a donot felhasználói azonosító oszlopa van, és amikor lecserélem a ShortlistedUserId-re, valamint a groupby záradékban is egyetlen sort ad egyetlen felhasználónak, azaz több sort egyetlen mappához :( 02.02.2012
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..