Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UNION, SUBQUERY i optymalizacja
Forum PHP.pl > Forum > Bazy danych > MySQL
24xls
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
nevt
  1. SELECT * FROM ipi_projekty LEFT JOIN ipi_etapy USING (project_id) WHERE dzialanie_id=5 ORDER BY STATUS, lp;
24xls
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.
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-2024 Invision Power Services, Inc.