[ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
NapísalOffline : 15.05.2016 17:50 | Vypis stlpcov bez kartezskeho sucinu

Ahoj,

potreboval by som poradit. Ako v mysql vypisem vedla seba stlpce z dvoch tabuliek bez toho aby mi vypisalo "kazdy s kazdym". Mam napriklad tabulku A, v ktorej je stlpec Hodnota a v nom cisla od 1 do 10 a mam tabulku B s tym istym stlpcom a v nom hodnoty od 11 do 20. Chcem aby sa mi vypisala jedna tabulka, v ktorej budu tieto 2 stlpce vedla seba. Ale nie kazdy s kazdym. Dakujem.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 15.05.2016 20:54 | Vypis stlpcov bez kartezskeho sucinu

Musíš nejak definovať spojenie medzi tými tabulkami. Databáza nemá odkiaľ vedieť, ktoré čísla má zobraziť vedľa seba. Či má na jeden riadok dať 1,11, alebo 14,19, ona v tom rozdiel nevidí.

Takže ak medzi tými stĺpcami existuje nejaký vzťah, tak ho daj jednoducho do joinu.
Napr. pre daný príklad, kde v jedno stĺpci sú čísla 1-10 a v druhom 11-20, môže to byť
Kód:
select t1.col1, t2.col2
from tab1 t1
join tab2 t2 on (t2.col2 = 10+t1.col1)


Ak medzi stĺpcami žiadny vzťah nie je tak to je zložitejšie, ale dá sa to (pozor! to môže byť komplikovanejší vzťah aj cez iný stĺpec, záleží na dátach).
Bude to ale aj úplne náhodné a nenapadá ma zmysel takého niečoho. Budeš mať totiž vedľa seba náhodne nejaké dve hodnoty zo všetkých možných kombinácií. Pričom sa to dá trochu korigovať pomocou order by, ale to nie je veľmi relačný prístup.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
Napísal autor témyOffline : 15.05.2016 22:11 | Vypis stlpcov bez kartezskeho sucinu

Mozno som svoju otazku nepolozil najlepsie, tak to skusim znovu.
Ucim sa SQL a mam dve tabulky. V tabulke emp_tbl mam zamestnancov s udajmi ako ID, meno, priezvisko, atd a v tabulke emp_pay_tbl mam udaje ID, plat, hod. mzda, atd. V kazdej je 12 zaznamov, ale jeden maju rozdielny - rozdiel je v stlpci ID lebo ten ich identifikuje. Teda pre 11 zamestnancov sa da vyselektovat tabulka, kde ich spojim cez ID. No lenze by som chcel napisat select, ktory by mi zobrazil 2 stlpce s ID zamestnancov z jednej aj druhej tabulky vedla seba. Aby som ich mal pekne vedla seba a videl kde sa odlisuju. Ale neviem ako to spravit. Napadlo ma len
Kód:
select e.emp_id, ep.emp_id
from emp_tbl e, emp_pay_tbl ep
where e.emp_id = ep.emp_id;

lenze to samozrejme zobrazi len tych 11 zaznamov a ten jeden, v ktorom sa nezhoduju to nezobrazi. Da sa to nejako spravit? Dakujem za odpoved.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 16.05.2016 7:13 | Vypis stlpcov bez kartezskeho sucinu

Ty asi myslíš outer join. Miesto cross joinu použi left join, alebo right join na ID, where zruš a napíš, či vidíš to čo chceš. Možno budeš chcieť full outer, ale to mysql natívne nevie, tak to napíšem potom.
Ak nie, tak ešte raz a napíš všetky stĺpce, žiadne "atď".


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
Napísal autor témyOffline : 16.05.2016 17:31 | Vypis stlpcov bez kartezskeho sucinu

Ahoj, tabulky vyzeraju takto
Kód:
CREATE TABLE EMP_TBL
(EMP_ID      CHAR(9)     NOT NULL,
 LAST_NAME   VARCHAR(15) NOT NULL,
 FIRST_NAME  VARCHAR(15) NOT NULL,
 MIDDLE_NAME VARCHAR(15) NULL,
 ST_ADD      VARCHAR(20) NOT NULL,
 CITY        VARCHAR(20) NOT NULL,
 REGION      CHAR(2)     NOT NULL,
 ZIP         VARCHAR(5)  NOT NULL,
 HOME_PH     VARCHAR(9)  NULL,
 EMER_CONT   VARCHAR(30) NULL,
 EMER_PH     VARCHAR(9) NULL,
 CONSTRAINT EMP_PK PRIMARY KEY (EMP_ID));

CREATE TABLE EMP_PAY_TBL
(EMP_ID     CHAR(9)      NOT NULL,
 DT_START   DATE         NOT NULL,
 POSITION   VARCHAR(30)  NOT NULL,
 SALARY     DECIMAL(8,2) NULL,
 HR_PAY     DECIMAL(6,2) NULL,
 COUNTY     VARCHAR(15)  NOT NULL,
 DEPARTMENT VARCHAR(15)  NOT NULL,
 CONSTRAINT EMP_PAY_PK PRIMARY KEY (EMP_ID));

Skusil som tento prikaz
Kód:
select e.emp_id, ep.emp_id
from emp_tbl e
left outer join emp_pay_tbl ep on (e.emp_id = ep.emp_id);


Vysledok je urcite lepsi ako ten select s where. Uz vypisalo dvanast riadkov, len na poslednom riadku je v lavom stlpci hodnota a v pravom NULL. Ale v podstate som chcel, aby boli oba stlpce naplnene hodnotami, ktore su v tabulkach, bez toho NULL vpravo. Ak to je vobec mozne.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 16.05.2016 18:21 | Vypis stlpcov bez kartezskeho sucinu

A aké hodnoty by si tam chcel?
Ak je v tabulke emp_pay riadok, ktorý nemá odpovedajúce emp_id, tak je tam nejaký starý plat, ktorého zamestnanec už neexistuje.
Ak je v tabulke emp riadok a v emp_pay nie je odpovedajúce emp_id, tak daný zamestnanec nemá pridelený plat. A nemôžeš mu tam predsa nejaký vymyslieť, to je nezmysel.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
Napísal autor témyOffline : 18.05.2016 17:25 | Vypis stlpcov bez kartezskeho sucinu

No ja viem, ze to co som chcel nema nejaky velky zmysel, ja som si iba tak pre seba chcel napisat prikaz, ktory by to urobil. Aby som si tak otestoval sam seba, co viem. Ale tak mozno sa to neda napisat. Aj ked premyslal som, ze by to mozno slo cez union. No ale chcel som v principe stlpec emp_id z jednej tabulky a vedla neho emp_id stlpec z tej druhej tabulky. Ale bez kartezskeho sucinu, len vypis tych 12 hodnot vedla seba.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 16.11.18
Príspevky: 1487
Témy: 2 | 2
NapísalOffline : 18.05.2016 18:28 | Vypis stlpcov bez kartezskeho sucinu

Takto ale relačné databáze nefungujú. Dať do jedného riadku 2 hodnoty, ktoré so sebou vôbec nesúvisia, je dosť ťažké. A to preto, že je to nezmyselné a normálne to nemáš prečo robiť.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.06.10
Prihlásený: 20.05.16
Príspevky: 36
Témy: 11 | 11
Napísal autor témyOffline : 20.05.2016 13:55 | Vypis stlpcov bez kartezskeho sucinu

OK, aj som si myslel, ze to mozno nepojde/nebude jednoduche. Dakujem za pomoc.


 [ Príspevkov: 9 ] 


Vypis stlpcov bez kartezskeho sucinu



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Vypis z databazi do dvoch stlpcov

v PHP, ASP

4

293

22.11.2007 16:11

mondzo

V tomto fóre nie sú ďalšie neprečítané témy.

Zoradenie dvoch stlpcov + vypis len unikatnych riadkov

v Databázy

3

193

16.03.2014 17:17

killer

V tomto fóre nie sú ďalšie neprečítané témy.

Duplikácia stĺpcov

v Databázy

1

421

22.05.2011 21:46

emer

V tomto fóre nie sú ďalšie neprečítané témy.

pc na hry bez taktovania 650-700e bez monitora bez OS

v PC zostavy

9

471

03.12.2012 19:52

brmbo

V tomto fóre nie sú ďalšie neprečítané témy.

Herne PC do 600e bez periferii, bez OS, bez HDD

v PC zostavy

9

442

26.11.2011 15:59

Ondr00

V tomto fóre nie sú ďalšie neprečítané témy.

update viacerych stlpcov

v Databázy

2

501

01.09.2008 22:19

m4r14n

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

Zarovnanie stlpcov tabuľky

v HTML, XHTML, XML, CSS

10

657

23.06.2010 21:02

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Grid a názvy stlpcov

v Delphi, Visual Basic

0

294

02.12.2010 14:36

jasug

V tomto fóre nie sú ďalšie neprečítané témy.

Uzamknutie stĺpcov EXCEL 2007

v Ostatné programy

2

1997

09.08.2012 15:54

stefan-s

V tomto fóre nie sú ďalšie neprečítané témy.

Nedostatok stlpcov v exceli

v Ostatné programy

3

554

03.10.2007 11:02

mimkork

V tomto fóre nie sú ďalšie neprečítané témy.

Spajanie rovnakych stlpcov tabulky..

v Databázy

11

823

05.02.2009 21:46

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

zoradenie stlpcov po kliknuti

v JavaScript, VBScript, Ajax

6

435

22.02.2010 18:22

juho

V tomto fóre nie sú ďalšie neprečítané témy.

Porovnanie 2 stlpcov v exceli

v Ostatné programy

4

342

26.01.2017 12:43

arindal

V tomto fóre nie sú ďalšie neprečítané témy.

Max.pocet stlpcov v tabulke

v Databázy

21

1408

20.08.2008 10:20

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

Porovnanie stlpcov matice v C++

v Assembler, C, C++, Pascal, Java

3

175

21.03.2015 12:18

focko

V tomto fóre nie sú ďalšie neprečítané témy.

Spojenie 2 stlpcov do 1 stlpca

v Databázy

6

934

06.01.2010 20:59

baumax



© 2005 - 2018 PCforum, edited by JanoF