• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

MYSQL Zapytania do wielu tabel

Object Storage Arubacloud
0 głosów
1,671 wizyt
pytanie zadane 29 stycznia 2018 w SQL, bazy danych przez Dagon Nowicjusz (120 p.)
edycja 5 lutego 2018 przez Dagon
Witam
Mam problem z wyciaganiem danych z wielu tabel i jeśli można to prosiłbym o "łopatologiczne" wytłumaczenie tworzenia takich selectow do wielu tabel. Wiem, ze nalezy skorzystac  z JOIN, ale nie do konca wiem w jaki sposob i konczy sie to iloczynem kartezjanskim.

Przykladowe zapytania

1.Podającą wszystkie dane włascicieli oraz ich działek , dla działek położonych w Warszawie

2.Podającą działki które  nie mają właścicieli i nie leżą w Warszawie

3.Podającą dane mapy (nrmapy,polozenie), oraz liczbę i  łączną powierzchnię działek na tych mapach

4.Podającą dane właścicieli, mających co najmniej 2 działki

TABELE:

dzialki | CREATE TABLE `dzialki` (
  `NrDzialki` char(20) NOT NULL,
  `Rodzaj` char(20) DEFAULT NULL,
  `NrMapy` int(3) DEFAULT NULL,
  `Powierzchnia` decimal(7,2) DEFAULT NULL,
  PRIMARY KEY (`NrDzialki`)

 mapy  | CREATE TABLE `mapy` (
  `NrMapy` int(3) NOT NULL DEFAULT '0',
  `Polozenie` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`NrMapy`)

 wlasciciele | CREATE TABLE `wlasciciele` (
  `Wlasciciel` varchar(100) DEFAULT NULL,
  `Miasto` varchar(100) DEFAULT NULL,
  `Adres` varchar(100) DEFAULT NULL,
  `DataUrodz` date DEFAULT NULL,
  `Pesel` char(11) NOT NULL,
  PRIMARY KEY (`Pesel`)

 wlasnosc | CREATE TABLE `wlasnosc` (
  `NrDzialki` char(20) NOT NULL,
  `Pesel` char(11) NOT NULL DEFAULT '',
  `Udzial` float(6,4) DEFAULT NULL,
  PRIMARY KEY (`Pesel`,`NrDzialki`),
  KEY `NrDzialki` (`NrDzialki`),
  CONSTRAINT `wlasnosc_ibfk_2` FOREIGN KEY (`NrDzialki`) REFERENCES `dzialki` (`NrDzialki`),
  CONSTRAINT `wlasnosc_ibfk_1` FOREIGN KEY (`Pesel`) REFERENCES `wlasciciele` (`Pesel`)
 

Probowałem zrobic kilka zapytan, ale np w przypadku 1, wynikiem byl iloczyn kartezjanski tabel:

SELECT w.*,d.* FROM wlasciciele w INNER JOIN dzialki d LEFT JOIN mapy m ON d.NrMapy=m.NrMapy WHERE m.Polozenie="Warszawa";

*edit
Udalo mi sie zrobic 1 i 2 select, jednak mam problemy z 3 i 4:
1.SELECT w.*,d.* FROM wlasciciele w LEFT JOIN wlasnosc wl USING(Pesel) INNER JOIN dzialki d USING(NrDzialki) INNER JOIN mapy m USING(NrMapy) WHERE m.Polozenie="Warszawa"
2.SELECT d.* FROM dzialki d LEFT JOIN wlasnosc wl USING(NrDzialki) INNER JOIN wlasciciele w USING (Pesel) INNER JOIN mapy m USING(NrMapy) WHERE Pesel IS NULL AND Polozenie!='Warszawa'
3.SELECT m.*,COUNT(d.NrDzialki), SUM(d.Powierzchnia) FROM dzialki d LEFT OUTER JOIN mapy m USING(NrMapy)--zwraca wyniki dla tylko jednej mapy, zamiast wszystkich

1 odpowiedź

0 głosów
odpowiedź 30 stycznia 2018 przez Wiciorny Ekspert (270,190 p.)

Może to Ci pomoże:  Spróbuj może FULL OUTER-JOIN

Podobne pytania

0 głosów
0 odpowiedzi 85 wizyt
0 głosów
2 odpowiedzi 3,206 wizyt
0 głosów
2 odpowiedzi 559 wizyt
pytanie zadane 18 września 2021 w SQL, bazy danych przez sisOOO Obywatel (1,370 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...