| | |
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | Napísal karco: 15.05.2016 17:50 | |
|
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.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 15.05.2016 20:54 | |
|
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! |
|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | Napísal autor témy karco: 15.05.2016 22:11 | |
|
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.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 16.05.2016 7:13 | |
|
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! |
|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | Napísal autor témy karco: 16.05.2016 17:31 | |
|
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.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 16.05.2016 18:21 | |
|
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! |
|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | Napísal autor témy karco: 18.05.2016 17:25 | |
|
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.
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 18.05.2016 18:28 | |
|
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! |
|
Registrovaný: 23.06.10 Prihlásený: 20.05.16 Príspevky: 36 Témy: 11 | Napísal autor témy karco: 20.05.2016 13:55 | |
|
OK, aj som si myslel, ze to mozno nepojde/nebude jednoduche. Dakujem za pomoc.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Vypis z databazi do dvoch stlpcov v PHP, ASP | 4 | 424 | 22.11.2007 16:11 mondzo | | Zoradenie dvoch stlpcov + vypis len unikatnych riadkov v Databázy | 3 | 352 | 16.03.2014 17:17 killer | | Duplikácia stĺpcov v Databázy | 1 | 589 | 22.05.2011 21:46 emer | | update viacerych stlpcov v Databázy | 2 | 648 | 01.09.2008 22:19 m4r14n | | Zarovnanie stlpcov tabuľky v HTML, XHTML, XML, CSS | 10 | 867 | 23.06.2010 21:02 shaggy | | Grid a názvy stlpcov v Delphi, Visual Basic | 0 | 469 | 02.12.2010 14:36 jasug | | Uzamknutie stĺpcov EXCEL 2007 v Ostatné programy | 2 | 2303 | 09.08.2012 15:54 stefan-s | | Spajanie rovnakych stlpcov tabulky.. v Databázy | 11 | 1074 | 05.02.2009 21:46 p360t | | Nedostatok stlpcov v exceli v Ostatné programy | 3 | 785 | 03.10.2007 11:02 mimkork | | zoradenie stlpcov po kliknuti v JavaScript, VBScript, Ajax | 6 | 655 | 22.02.2010 18:22 juho | | pc na hry bez taktovania 650-700e bez monitora bez OS v PC zostavy | 9 | 1312 | 03.12.2012 19:52 brmbo | | Porovnanie 2 stlpcov v exceli v Ostatné programy | 4 | 751 | 26.01.2017 12:43 arindal | | Porovnanie stlpcov matice v C++ v Assembler, C, C++, Pascal, Java | 3 | 414 | 21.03.2015 12:18 focko | | Max.pocet stlpcov v tabulke v Databázy | 21 | 1616 | 20.08.2008 10:20 p360t | | Herne PC do 600e bez periferii, bez OS, bez HDD v PC zostavy | 9 | 1180 | 26.11.2011 15:59 Ondr00 | | Spojenie 2 stlpcov do 1 stlpca v Databázy | 6 | 1327 | 06.01.2010 20:59 baumax |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|