ďťż
 
[sql] kilka tabel -> jedna tabela ďťż
 
[sql] kilka tabel -> jedna tabela
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[sql] kilka tabel -> jedna tabela



/\\/\\ichau Smoczyk - 13-11-2005 11:58
[sql] kilka tabel -> jedna tabela
  Witam, mam bazę w MySQL i potrzebuję zrobić następującą rzecz -- zrzucić
całą bazę do jednej tabeli. Jest to baza danych bibliograficznych z
kilkunastoma tabelami zawierającymi wydawnictwa, miejsca wydania, nazwy
czasopism i inne tego typu dane tekstowe. Główna tabela wygląda tak:

-------------------------------------------------------------------
id autor rok tytul id_czasopisma id_wydawnictwo id_msc_wydania
-------------------------------------------------------------------
1 Nowak J. 1999 Blabla 3 1 34
-------------------------------------------------------------------

Wszystkie pola o naziwe z przedtostkiem id_ są typu int i są połączone
relacyjnie z innymi tabelami, gdzie są pełne nazwy czasopism, wydawnictw
etc. Chciałbym zrzucić wszystko do takiej tabeli, gdzie będą /pełne/
informacje, a nie tylko relacje:

-------------------------------------------------------------------
id autor rok tytul id_czasopisma id_wydawnictwo id_msc_wydania
-------------------------------------------------------------------
1 Nowak J. 1999 Blabla Wprost PWN Warszawa
-------------------------------------------------------------------

Potrzebne jest mi to, aby taką pełną tabelę wyeksportować do innej
aplikacji. Proszę o pomoc lub podpowiedź, wskazówkę, SQL nie znam za
bardzo, próbowałem z poleceniem SELECT, ale niewiele zdziałałem.
Pozdrawiam,

--
/\/\ichau, msmoczyk [malpka] wp [kropa] pl
http://www.nocnyrzepin.prv.pl





Rafal Zawadzki - 13-11-2005 11:58

 
[ciach], nie wiem czy pomogę ale:

> Potrzebne jest mi to, aby taką pełną tabelę wyeksportować do innej
> aplikacji. Proszę o pomoc lub podpowiedź, wskazówkę, SQL nie znam za
> bardzo, próbowałem z poleceniem SELECT, ale niewiele zdziałałem.
> Pozdrawiam,
>

mysql> select * from glowna;
+----+--------+------+------------------+---------------+----------------+----------------+
| id | autor | rok | tytul | id_czasopisma | id_wydawnictwo |
id_msc_wydania |
+----+--------+------+------------------+---------------+----------------+----------------+
| 1 | Nowak | 2020 | Podroze w czasie | 1 | 1 |
2 |
| 2 | Brutus | 20 | Londyn plonie | 2 | 2 |
1 |
+----+--------+------+------------------+---------------+----------------+----------------+
2 rows in set (0.00 sec)

mysql> select * from wydawnictwa;
+----+-------------+
| id | name |
+----+-------------+
| 1 | north press |
| 2 | south press |
+----+-------------+
2 rows in set (0.00 sec)

mysql> select * from czasopisma;
+----+----------+
| id | name |
+----+----------+
| 1 | klamstwa |
| 2 | szuje |
+----+----------+
2 rows in set (0.00 sec)

mysql> select * from miesiace;
+----+---------+
| id | name |
+----+---------+
| 1 | styczen |
| 2 | luty |
+----+---------+
2 rows in set (0.00 sec)

mysql>
mysql> describe docelowa;
+----------------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-----------+------+-----+---------+----------------+
| id | int(10) | | PRI | NULL | auto_increment |
| autor | char(100) | YES | | NULL | |
| rok | char(100) | YES | | NULL | |
| tytul | char(100) | YES | | NULL | |
| id_czasopisma | char(100) | YES | | NULL | |
| id_wydawnictwo | char(100) | YES | | NULL | |
| id_msc_wydania | char(100) | YES | | NULL | |
+----------------+-----------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

mysql>
mysql> select * from docelowa;
Empty set (0.00 sec)

mysql> insert into docelowa (autor, rok, tytul, id_czasopisma,
id_wydawnictwo, id_msc_wydania) (select autor, rok, tytul, czasopisma.name,
miesiace.name, wydawnictwa.name from glowna, czasopisma, miesiace,
wydawnictwa where id_czasopisma=czasopisma.id and
id_msc_wydania=miesiace.id and id_wydawnictwo=wydawnictwa.id);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from docelowa;
+----+--------+------+------------------+---------------+----------------+----------------+
| id | autor | rok | tytul | id_czasopisma | id_wydawnictwo |
id_msc_wydania |
+----+--------+------+------------------+---------------+----------------+----------------+
| 3 | Nowak | 2020 | Podroze w czasie | klamstwa | luty |
north press |
| 4 | Brutus | 20 | Londyn plonie | szuje | styczen |
south press |
+----+--------+------+------------------+---------------+----------------+----------------+
2 rows in set (0.00 sec)

mysql>

czy o to chodziło?

--
つた




/\\/\\ichau Smoczyk - 13-11-2005 11:58

  Rafal Zawadzki wrote:

> (select autor, rok, tytul,
> czasopisma.name, miesiace.name, wydawnictwa.name from glowna, czasopisma,
> miesiace, wydawnictwa where id_czasopisma=czasopisma.id and
> id_msc_wydania=miesiace.id and id_wydawnictwo=wydawnictwa.id);

> czy o to chodziło?

Prawie, ale niestety nie do końca, dzięki za odzew.
Powyższe zapytanie z całej mojej tabeli (ponad tysiąc rekordów) daje
mi /tylko/ 2 rekordy. Otóż wybiera ono rekordy które spełniają WSZYSTKIE
podane tam kryteria (operator AND).
Ja w tabeli mam różne rekordy przedstawiające /różne/ typy publikacji: takie
które nie mają wypełnionego pola id_czasopisma (bo są to ksiązki, rozdziały
lub inne typy publikacji), id_wydawnictwo (bo są to artykuły z czasopism)
itp.

Czy można to jakoś rozwiązać? Wpisanie OR zamiast AND daje /ogromną/ tabelę.

--
/\/\ichau, msmoczyk [malpka] wp [kropa] pl
http://www.nocnyrzepin.prv.pl




Rafal Zawadzki - 13-11-2005 11:58

  /\/\ichau Smoczyk wrote:

> Rafal Zawadzki wrote:
>
>> (select autor, rok, tytul,
>> czasopisma.name, miesiace.name, wydawnictwa.name from glowna, czasopisma,
>> miesiace, wydawnictwa where id_czasopisma=czasopisma.id and
>> id_msc_wydania=miesiace.id and id_wydawnictwo=wydawnictwa.id);
>
>> czy o to chodziło?
>
> Prawie, ale niestety nie do końca, dzięki za odzew.
> Powyższe zapytanie z całej mojej tabeli (ponad tysiąc rekordów) daje
> mi /tylko/ 2 rekordy. Otóż wybiera ono rekordy które spełniają WSZYSTKIE
> podane tam kryteria (operator AND).
> Ja w tabeli mam różne rekordy przedstawiające /różne/ typy publikacji:
> takie które nie mają wypełnionego pola id_czasopisma (bo są to ksiązki,
> rozdziały lub inne typy publikacji), id_wydawnictwo (bo są to artykuły z
> czasopism) itp.
>
> Czy można to jakoś rozwiązać? Wpisanie OR zamiast AND daje /ogromną/
> tabelę.
>

select autor, rok, czasopisma.name, wydawnictwa.name from glowna left join
czasopisma on czasopisma.id=glowna.id_czasopisma left join wydawnictwa on
wydawnictwa.id=glowna.id_wydawnictwo;

i tak dalej z left join?

--
つた
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • misida.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com