Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> UNION, SUBQUERY i optymalizacja, Łączenie dwóch tabel - rodziców i dzieci
24xls
post 12.02.2008, 14:46:43
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.02.2008

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


Witam po raz pierwszy na tym forum winksmiley.jpg .

Bawię się amatorsko mySQLem, właśnie wyczarowałem skomplikowane (jak dla mnie) zapytanie - działa, ale mam wątpliwości czy nie przekombinowalem.

Mam dwie tabele 'projekty' oraz 'etapy'. Każdy projekt może posiadać 0 albo wiele etapów. Tabele są skojarzone poprzez pole 'project_id'. W tabeli 'projekty' jest to unikalny numer projektu, w tabeli 'etapy' identyfikuje rodzica.

Potrzebuję wyciągnąć z bazy listę projektów wraz z etapami spełniajace określone kryteria.
  1. SELECT * FROM ipi_projekty WHERE dzialanie_id=5
  2. UNION
  3. SELECT * FROM ipi_etapy WHERE (project_id = ANY (
  4. SELECT project_id FROM ipi_projekty WHERE dzialanie_id=5))
  5. ORDER BY STATUS ASC, lp

Wszelkie uwagi mile widziane winksmiley.jpg

Pozdrawiam,
24xls

Ten post edytował 24xls 13.02.2008, 12:18:36
Go to the top of the page
+Quote Post
nevt
post 12.02.2008, 16:14:42
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


  1. SELECT * FROM ipi_projekty LEFT JOIN ipi_etapy USING (project_id) WHERE dzialanie_id=5 ORDER BY STATUS, lp;


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
24xls
post 13.02.2008, 09:23:56
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.02.2008

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


Cytat(nevt @ 12.02.2008, 16:14:42 ) *
  1. SELECT * FROM ipi_projekty LEFT JOIN ipi_etapy USING (project_id) WHERE dzialanie_id=5 ORDER BY STATUS, lp;


Twoje zapytanie zwraca mi tabelę:
wiersz1: inf_o_projekcie1 + info_o_Pierwszym_etapie
wiersz2: inf_o_projekcie2 + NULL
wiersz3: inf_o_projekcie3 + info_o_Pierwszym_etapie
wiersz4: inf_o_projekcie4 + info_o_Pierwszym_etapie


Tymczasem ja potrzebuję:
wiersz1: inf_o_projekcie1
wiersz2: inf_o_Pierwszym_etapie
wiersz3: inf_o_Drugim_etapie
wiersz4: inf_o_Trzecim_etapie
wiersz5: inf_o_projekcie2

Trudność polega na tym że tabela 'ipi_etapy' nie posiada wszystkich pól które posiada tabela 'ipi_projekty', a wg. których chcę sortować i filtorwać wiersze.

Dla większej czytalności zapytania z pierwszego posta wstawiłem *, zamiast listy pól które są wspólne dla dwóch tabel.
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: 27.06.2025 - 13:54