Dvě tabulky StoredProceduy   otázka

SQL, Databáze

Dobry den,

rad bych pozadal o pomoc s :

Mam stored proceduru (SQL SEVRER 2008 R2), kde je napr.:

SELECT Jmeno, Prijmeni

FROM Lide

SELECT Nazev, Cena

FROM JIDLO

Pokud tuto proceduru spustim v SQL management studiu, tak

ziskam dve tabulky, bohuze, kdyz tuto SP pridam

do DataSet designeru ve VS2010, tak ziskam data pouze z prvni

tabulky.

Muzete mi prosim nekdo poradit ?

Dekuji predem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud ty 2 tabulky spolu souvisejí, musíte je propojit joinem. K tomu budete potřebovat v tabulce nějaké jednoznačné identifikátory, nejlépe primární klíč. Bohužel Vám nedokáži odpovědět přesněji, protože nevím jakou strukturu Vaše tabulky mají.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je logické a jasné,že nedostanete oba výstupy.Respektive je dostanete,ale ve dvou query,tudíž to druhé "přepíše" první.Management studio vám to také nezobrazí jako jeden výsledek,ale dva.

Řešení je několik,např.již napovězený join.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S joinem to není problém,

ale je o to že jedna tabulka obsahuje jeden radek...informace o firme....Nazev, adresa, Ico..apod.

Druha jsou zbozi, ktere firma koupila...

Kdyz pouziji join, zbytecne se mi 10x opakuje radek nazev firmy,

udelal bych to separé, ale Crystal reports mi nechce akceptovat dvě stored procedury.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak tomu popravdě nerozumím...Co přesně potřebujete dostat za výstup?Evidentně jste nenapsal dotaz správně

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Potřebuji dostat výstup dvou tabulek,

dvou ruznych tabulek z jedne stored procedury

nahlásit spamnahlásit spam 0 odpovědětodpovědět

použijte union all..tedy:

select * from table1
union all
select * from table2

Nicméně doporučuji si nastudovat základy SQL,než-lise budete pouštět do stored procedur a složitějších SQL objektů

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ty dvě tabulky nemají stejná data

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Aha,tak potom:

select * from table1,table2

nahlásit spamnahlásit spam 0 odpovědětodpovědět

@IdJmeno int (napr 54)

select IdJmeno, Jmeno, Prijmeno

FROM LIDE

WEHER IdJmeno = @IdJmeno

Select Nazev, Cena

FROM Jidlo

Where IdJmeno = @IdJmeno

Vystup :

IdJmeno Jmeno Prijmeni

54 Karel Novak

IdJidlo NazevJidla CenaJidla

12 Rohlik 2.45

12 Chleba 31.5

12 Houska 3.10

POKUD POUZIJI INNER JOIN tak tabulak vypada treba takto :

IdJmeno Jmeno Prijmeni IdJidlo NazevJidla CenaJidla

54 Karel Novak 12 Rohlik 2.45

54 Karel Novak 12 Chleba 31.5

54 Karel Novak 12 Houska 3.10

no a me se zkratka nelibi ta druha varianta...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jen doplnim..problem nespociva v napsani procedury...

ale kdyz vlozim SP do Dataset designeru tak mi to zobrazi pouze

prvni tabulku, druhou jiz nikoliv

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je ale problém stored procedury,pochopte,že máte dva statementy,dostanete tedy dva výstupy.SQL management studio je vám pouze schopné oba výstupy zobrazit najednou.Což DataSet určitě neudělá.Popravdě nerozumím,proč to máte v jedné SP,když jde o jiná data a tím pádem nelze a nemělo by se,psát obecnou SP.

Pokud mají tabulky jinou strukturu tak to nijak jednodušše nepůjde.Nepoužívejte jednu SP,ale dva samostatně selecty nebo dvě oddělené SP.

Nicméně na toto mi přijde SP trochu jako kanón na vrabce

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dekuji vsem za rady, vydam se cestou INNER JOINU

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback