Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sie o to zapytac?
Forum PHP.pl > Forum > Bazy danych
czezz
Jest tak: mam 4 tabele w jednej bazie. Tabele: main, x, y, z. Main zawiera pole ID, ktoro jest rozdzielone losowo do tabel x, y ,z. ( Tzn. gdyby polaczyc tabele x,y,z to daly by one w sumie tabele main. ).

Potrzebuje zrobic takie zapytanie, ktoro wyswietli mi w porownaniu z tabela main, czesc wspolna dla x, czesc wspolna dla y oraz czesc spolna dla z ( przy czym y nia ma czesci w spolnej w 'x' i 'z' oraz 'z' nie ma czesci wspolnej w 'x' i 'y' oraz x nie ma czesci wspolnej w 'x' i 'y'.

Probowalem zrobic to tak, ale nie zadzialalo:

[sql:1:071766000a]
SELECT count(*)
FROM main, x, y, z
WHERE (main.id = x.id) OR (main.id = y.id) OR (main.id = z.id);
[/sql:1:071766000a]

Jestem amatorem i to co zacytowalem moze zabrzmiec dla wielu z was bezsensu wiec z pokora wyslucham kazdej krytycznej (pouczajacej ) uwagi.
adwol
Skoro x, y i z są parami rozłączne i w sumie dają tablicę main to część wspólna x i main to jest x. Analogicznie dla y i z. O co więc Ci chodzi, bo nie rozumiem dokładnie.
czezz
Musze wyswietlic x,y,z ( kazda przyrownana do main) tak zeby x, y, z byly wyswietlone w 3 roznych kolumnach - x, y, z.
czezz
wiec, przeczytalem madra ksiazke i rozwiazalem to tak:


[sql:1:1524688046]
select x.tel1, sum(x.impuls) from main, x where (main.id = x.id ) and main.data = 110703 group by x.tel1
union all
select z.tel1, sum(z.impuls) from main, z where (main.id = z.id ) and main.data = 110703 group by z.tel1
union all
select y.tel1, sum(y.impuls) from main, y where (main.id = y.id ) and main.data = 110703 group by y.tel1;
[/sql:1:1524688046]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.