Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



SQL dotaz

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: SQL dotaz

Autor: grafnev

9:35:58 23.08.2011

Treba v teradate jsou takove veci casto potreba, protoze zaklad nema temer zadne funkce pro operace na radku ... takze ani greatest atd. Navic me tohle resesni pripada asi nejcistci co lze na sql udelat. Trochu by se to zvetsilo pokud by nebyly k dispozici okenkove funkce.

Vicemene to na sql zacian byt zajimave s ulohami typu spojte na casove ose vsechny po sobe jdouci zaznamy u kterych se nezmenily parametry, propojte tyto dve tabulky do treti a vyrobte spravne vykazovou a ucinnostni casovou osu atd....

Citovat příspěvek

 

Re: SQL dotaz

Autor: Maaartin

23:36:55 22.08.2011

Proboha, takovy monstrum. To vazne nejsou schopny udelat GROUP_CONCAT nebo lepe neco jako

aggregate(expression, binaryFunction)

aby clovek nemusel psat takovy megaobfuskace?

Citovat příspěvek

 

Re: SQL dotaz

Autor: Pavel Stehule

21:58:37 22.08.2011

Hezke ale drsne reseni. Nebylo v MSSQL neco podobneho jednodussiho na bazi XML funkci?

Pavel

Citovat příspěvek

 

Re: SQL dotaz

Autor: P

17:23:35 22.08.2011

Moznosti je vic. Treba:
[code]
/*
CREATE TABLE Adresar (
ID INT
, Jmeno NVARCHAR(100)
);

CREATE TABLE Kontakty (
Adresar_ID INT
, Email NVARCHAR(100)
);

INSERT INTO Adresar VALUES (1, 'František Jouda');
INSERT INTO Adresar VALUES (2, 'ACME Inc.');

INSERT INTO Kontakty VALUES (1, 'franta123@seznam.cz');
INSERT INTO Kontakty VALUES (1, 'joudovi@gmail.com');
INSERT INTO Kontakty VALUES (1, 'fjouda@acme.com');

INSERT INTO Kontakty VALUES (2, 'info@acme.com');
INSERT INTO Kontakty VALUES (2, 'fjouda@acme.com');
*/

WITH a AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY Adresar_ID ORDER BY Email) AS RN
, ROW_NUMBER() OVER (PARTITION BY Adresar_ID ORDER BY Email DESC) AS RN_Desc
FROM Kontakty
),
b AS (
SELECT Adresar_ID, RN, RN_Desc, CAST(Email AS NVARCHAR(MAX)) AS Email
FROM a
WHERE RN = 1
UNION ALL
SELECT a.Adresar_ID, a.RN, a.RN_Desc, CAST(b.Email + ';' + a.Email AS NVARCHAR(MAX)) AS Email
FROM a
INNER JOIN b ON b.Adresar_ID = a.Adresar_ID AND b.RN = a.RN - 1
)
SELECT a.ID, a.Jmeno, b.Email
FROM Adresar AS a
INNER JOIN b ON b.Adresar_ID = a.ID AND b.RN_Desc = 1
;
[/code]

Citovat příspěvek

 

Re: SQL dotaz

Autor: Mi.Chal

12:22:42 20.08.2011

martasek2 Napsal:
-------------------------------------------------------
> Díky za reakci, bohužel v MSSQL GROUP_CONCAT
> neexistuje a všechno co jsem zatím našel pro MSSQL
> tak mi nefunguje

asi neco delas blbe :-). Taky nevim o tom, ze by mssql melo neco standardniho, muzes si treba napsat funkci, ktera ty data nacte a vrati oddelena carkou, pak to bude delat to co chces. Vypisovat vsechny maily mi ale prijde ponekud neprakticke, smysl ma myslim zobrazit treba prvni tri a detaily zobrazovat az na to clovek klikne.

Citovat příspěvek

 

Re: SQL dotaz

Autor: martasek2

11:32:47 20.08.2011

Díky za reakci, bohužel v MSSQL GROUP_CONCAT neexistuje a všechno co jsem zatím našel pro MSSQL tak mi nefunguje :-(

Citovat příspěvek

 

Re: SQL dotaz

Autor: Maaartin

10:08:22 20.08.2011

Ten M$$SQL neznam, ale neco jako

SELECT A.id, A.jmeno, GROUP_CONCAT(B.email) AS email
FROM Adresar A JOIN Kontakty K ON A.id = B.adresarId
GROUP BY 1, 2

funguje jinde. Tohle ti rekne vic:
http://www.google.com/search?q=MSSQL+GROUP_CONCAT

Citovat příspěvek

 

SQL dotaz

Autor: martasek2

9:24:21 20.08.2011

Zdravím,

mám dotaz ohledně možnosti SQL. Mám tabulku Adresář a tabulku Kontakty. Ke každému záznamu v adresáři může být libovolný počet kontaktů, např. emailů. Jde mi o to, že bych potřeboval spustit dotaz nad databází tak, aby mi vrátila tabulku, kde budou všechny záznamy z tabulky adresář a ve sloupci email budou vypsány všechny emailové adresy z tabulky Kontakty, které náleží k aktuálnímu adreátovi, oddělené středníkem nebo čárkou. Je možné tento dotaz vytvořit přímo v MSSQL 2008 nebo nebo mám radši použít VB.NET a procházet tabulku po jednotlivých záznamech a přiřazovat kontakty?



Díky


m.

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: