Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]JOIN-3 tabele+zapytanie o nie istniejące dane
Forum PHP.pl > Forum > Przedszkole
jastu
Liczę na waszą pomoc bo problem który wam przedstawię tochę mnie przerasta,starałem opisać się sytuację w możliwie najjaśniejszy sposób. .
Nie potrafię złożyć zapytania o wybrane rekordy.

Struktura bazy wgląda tak :
Tabela LOGINS :

  1. CREATE TABLE logins (id_log int AUTO_INCREMENT PRIMARY KEY,
  2. imie varchar(15) NOT NULL,
  3. pion varchar(30) NOT NULL );


Tabela zgłoszenia :
  1. CREATE TABLE zgloszenia (id_zgl int AUTO_INCREMENT PRIMARY KEY,
  2. id_log int NOT NULL,
  3. opis varchar(500) NOT NULL,
  4. grupa varchar(8) NOT NULL DEFAULT "oc2");


Tabela opinie 1 :
  1. CREATE TABLE opinie (ok_id_oc int AUTO_INCREMENT PRIMARY KEY,
  2. ok_id_zgl int NOT NULL,
  3. ok_id_log int NOT NULL,
  4. ok_opis varchar(500) NOT NULL DEFAULT "x");


Tabela opinie 2 :
  1. CREATE TABLE opinie2 (or_id_oc int AUTO_INCREMENT PRIMARY KEY,
  2. or_id_zgl int NOT NULL,
  3. or_id_log int NOT NULL,
  4. or_opis varchar(500) NOT NULL);


Problem jest taki :
- Jest dedykowana grupa kilku użykowników którzy wpisują swoje oceny do tabeli opinie2 - każdy z nich ma swoją listę.Warunkiem pojawienia się zgloszenia na tej liście jest zmiana statusu zgłoszenia z "oc2" na "oc3" , zapytanie wygląda tak :

  1. SELECT *
  2. FROM zgloszenia
  3. z LEFT JOIN opinie2 o ON (z.id_zgl=o.or_id_zgl AND o.or_id_log='$unikat')
  4. WHERE z.grupa='oc3' AND z.id_log!='$unikat'
  5. GROUP BY z.id_zgl HAVING count(o.or_id_zgl)=0 ;

Gdzie paramet $unikat to jest id_log - bieżący zalogowany

Chcę dodać do tego zapytania (podejrzewam że przez join) opcję dzięki której na liście użytkownika z pionu OC3 pojawiły się nie tylko zgłoszenia które zmienią status na OC3 ale i zgłoszenia które uzyskały więcej niż 10 odpowiedzi z pionu OC2(czyli wpisów do tabeli opinie1).

Zastanawiałem się czy umieścić ten problem w przedszkolu , liczę na waszą pomoc ,Pozdrawiam.
zezu
Nie uważasz że czas wykonania takiego długiego zapytania może być dość długi, może nie warto do tego stopnia obciążać bazy .

Niestety , odpowiedzi na twoje pytanie nie znam sad.gif
Powodzenia
jastu
Sprawdzałem , zapytanie jest wykonywane (na moim kompie) w 0.23.
Nadal jestem w martwym punkcie tiredsmiley.gif
NuLL
Zainteresuj sie f-cja IF w MySQL-u. Poszukaju w manualu ( link na dole )- powinna ci pomoc.
sf
a nie wystarczy or i podzapytanie? ;-)
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.