Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Dane z dwóch różnych tabel
brzanek
post 19.04.2019, 08:38:05
Post #1





Grupa: Zarejestrowani
Postów: 427
Pomógł: 0
Dołączył: 8.11.2012

Ostrzeżenie: (0%)
-----


Witam wiem, że na forum jest mnóstwo podobnych tematów ale żaden z nich nie jest odpowiedni do mojego problemu.
Mam w bazie danych dwie tabele
gorzow i gorzow_t
W tabeli gorzow mam takie pola:
  1. CREATE TABLE `gorzow` (
  2. `id` int(11) NOT NULL,
  3. `nazwastacji` varchar(50) CHARACTER SET latin2 NOT NULL,
  4. `miasto` varchar(50) CHARACTER SET latin2 NOT NULL,
  5. `rok` varchar(20) CHARACTER SET latin2 NOT NULL,
  6. `miesiac` varchar(4) CHARACTER SET latin2 NOT NULL,
  7. `dzien` varchar(6) CHARACTER SET latin2 NOT NULL,
  8. `max_temp` float(6,1) NOT NULL,
  9. `b` varchar(20) CHARACTER SET latin2 NOT NULL,
  10. `min_temp` float(6,1) NOT NULL,
  11. `d` varchar(20) CHARACTER SET latin2 NOT NULL,
  12. `srednia_temp` float(6,1) NOT NULL
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


W tabeli gorzow_t mam takie pola
  1. CREATE TABLE `gorzow_t` (
  2. `id` int(11) NOT NULL,
  3. `kod_meteo` varchar(20) NOT NULL,
  4. `nazwa_stacji` varchar(20) NOT NULL,
  5. `rok` varchar(5) NOT NULL,
  6. `miesiac` varchar(5) NOT NULL,
  7. `dzien` varchar(5) NOT NULL,
  8. `srednie_dobowe_zachmurzenie` float(5,1) NOT NULL,
  9. `status_pomiaru_sdz` varchar(2) NOT NULL,
  10. `srednia_dobowa_predkosc_wiatru` float(5,1) NOT NULL,
  11. `status_pomiaru_sdpw` varchar(2) NOT NULL,
  12. `srednia_dobowa_temperatura` float(5,1) NOT NULL,
  13. `status_pomiaru_sdt` varchar(2) NOT NULL,
  14. `srednie_dobowe_cisnienie_pary_wodnej` float(5,1) NOT NULL,
  15. `status_pomiaru_sdcpw` varchar(2) NOT NULL,
  16. `srednia_dobowa_wilgotnosc` float(5,1) NOT NULL,
  17. `status_pomiaru_sdw` varchar(2) NOT NULL,
  18. `srednie_dobowe_cisnienie_poziom_stacji` float(5,1) NOT NULL,
  19. `status_pomiaru_sdcps` varchar(2) NOT NULL,
  20. `srednie_dobowe_cisnienie_poziom_morza` float(5,1) NOT NULL,
  21. `status_pomiaru_sdcpm` varchar(2) NOT NULL,
  22. `suma_opadu_dzien` float(5,1) NOT NULL,
  23. `status_pomiaru_sod` varchar(2) NOT NULL,
  24. `suma_opadu_noc` float(5,1) NOT NULL,
  25. `status_pomiaru_son` varchar(2) NOT NULL
  26. ) ENGINE=InnoDB DEFAULT CHARSET=latin2;


Wspólnymi polami jest rok, miesiac i dzień
Chcę wyciągnąć te wszystkie dane z dwóch tabel dla danego miesiąca w danym roku.
Daję takie zapytanie
  1. SELECT * FROM `gorzow`
  2. INNER JOIN `gorzow_t`
  3. ON `gorzow`.`nazwastacji` = `gorzow_t`.`kod_meteo`
  4. WHERE `rok` LIKE '1967' AND `miesiac` LIKE '05' ORDER BY `id` ASC

Chyli wywołuję dane z dwóch tabel gorzow i gorzow_t dla maja 1967 roku ale nic się nie dzieje.
Gdzie jest błąd?
Go to the top of the page
+Quote Post
kapslokk
post 19.04.2019, 08:41:59
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Czy na pewno powinieneś łączyć po polach `gorzow`.`nazwastacji` i `gorzow_t`.`kod_meteo`??
Go to the top of the page
+Quote Post
Pyton_000
post 19.04.2019, 08:42:17
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Mysql nie wie do którego pola rok i miesiąc odwołujesz się czy w tabeli gorzow czy gorzow_t.

`WHERE `gorzow_t`.`rok` LIKE '1967' AND `gorzow_t`.`miesiac` LIKE '05'`
Go to the top of the page
+Quote Post
brzanek
post 19.04.2019, 11:10:43
Post #4





Grupa: Zarejestrowani
Postów: 427
Pomógł: 0
Dołączył: 8.11.2012

Ostrzeżenie: (0%)
-----


OK zrobiłem tak
  1. SELECT * FROM `gorzow`
  2. INNER JOIN `gorzow_t`
  3. ON `gorzow`.`nazwastacji` = `gorzow_t`.`kod_meteo`
  4. WHERE `gorzow`.`rok` LIKE '1967' AND `gorzow`.`miesiac` LIKE '05' ORDER BY `gorzow`.`id` ASC

Ale wyniki są tylko dla jednego dnia a powinny być dla całego miesiąca.

Cytat(kapslokk @ 19.04.2019, 08:41:59 ) *
Czy na pewno powinieneś łączyć po polach `gorzow`.`nazwastacji` i `gorzow_t`.`kod_meteo`??

No właśnie nie do końca jestem pewien czy to dobry pomysł. Ale po ID odpada bo nie zawsze może zgadzać się data. Zrobił bym po dacie rok, miesiąc i dzień ale niw wiem czy to wypali.
Go to the top of the page
+Quote Post
kapslokk
post 19.04.2019, 11:19:22
Post #5





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


No to po czym łączysz jest kluczowe.

Wpisy z jednej tabeli w jakiś sposób odpowiadają wpisom z drugiej. Jeśli w Twoim przypadku jedyne co je łączy to rok, miesiąc i dzień to musisz po tym łączyć.
Może wrzuć przykład danych na których pracujesz?
Go to the top of the page
+Quote Post
brzanek
post 19.04.2019, 11:29:48
Post #6





Grupa: Zarejestrowani
Postów: 427
Pomógł: 0
Dołączył: 8.11.2012

Ostrzeżenie: (0%)
-----


Zgadza się, ale jak dałem aby łączyło się po wspólnej dniu to dane są tylko z jednego dnia i powtarzają się. Tak samo jest w przypadku łączenia po nazwastacji i kod_meteo
Go to the top of the page
+Quote Post
kapslokk
post 19.04.2019, 11:36:09
Post #7





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


W joinie powinieneś mieć rok, miesiąc i dzień - masz tylko dzień.
Go to the top of the page
+Quote Post
brzanek
post 19.04.2019, 11:48:51
Post #8





Grupa: Zarejestrowani
Postów: 427
Pomógł: 0
Dołączył: 8.11.2012

Ostrzeżenie: (0%)
-----


Dałem tak
  1. SELECT * FROM `gorzow`
  2. INNER JOIN `gorzow_t`
  3. ON `gorzow`.`rok` AND `gorzow`.`miesiac` AND `gorzow`.`dzien` = `gorzow_t`.`rok` AND `gorzow_t`.`miesiac` AND `gorzow_t`.`dzien`
  4. WHERE `gorzow`.`rok` LIKE '1967' AND `gorzow`.`miesiac` LIKE '05' ORDER BY `gorzow`.`id` ASC

Uzyskałem pusty wynik.
Go to the top of the page
+Quote Post
Pyton_000
post 19.04.2019, 12:01:06
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Bo bzdury napisałeś...

gorzow.dzien = gorzow_t.dzien AND ... itd.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 20:29