Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sqlite]Podwójne zapytanie
Forum PHP.pl > Forum > PHP
bartg
Witam. Mam takie proste zapytanie:
  1. SELECT a.access_action, a.access_model FROM syd_access a
  2. LEFT JOIN syd_users u ON (a.access_type_id = u.user_id AND a.access_type = 'u')
  3. WHERE u.user_id = 2 OR (a.access_type_id IN(SELECT group_id FROM syd_groups_members WHERE user_id = 2) AND a.access_type = 'g')

Tabelki:
  1. CREATE TABLE [syd_access] (
  2. [access_action] varchar(50) NOT NULL,
  3. [access_model] varchar(50) NOT NULL,
  4. [access_type] char(1) NOT NULL,
  5. [access_type_id] INTEGER DEFAULT '0' NOT NULL
  6. )


  1. CREATE TABLE [syd_groups_members] (
  2. [user_id] INTEGER NOT NULL,
  3. [group_id] INTEGER NOT NULL
  4. )

w pierwszej tabeli powiedzmy mam:
  1. Index,Index,g,2

a w drugiej mam
  1. 1,2



I ostateczne pytanie czemu nie sciaga zadnych danych ?

PS> dodam że aktualnie korzystam z SQLITE smile.gif, a na mysql działa wyśmienicie zapytanie
memory
jakis konkretny blad wyskakuje?
blooregard
SQLite nie obsługuje któregoś ze złączeń (chyba właśnie LEFT), ale nie jestem pewien do końca. Sprawdź w dokumentacji.
bartg
Jeśliby nie obsługiwał to by przeciez błąd wywaliło ...
Left działa przy innych zapytaniach, a np: RIGHT FULL INNER CROSS nie działa na razie smile.gif

EDITED:
Dobra, mam rozwiązanie. Może się komuś na przyszłośc przyda, bo to dziwny błędzik smile.gif

NIGDY nie dawajcie do joina warunku który nie jest powiązany z tabelą (u mnie access_type musiałbyc u a nie np u.user_type), czyli taki który da się do WHERE przenieść smile.gif

Po przeniesiesniu tego warunku do where wyszlo mi takie działające zapytanie smile.gif
  1. SELECT a.access_action, a.access_model FROM syd_access a
  2. LEFT JOIN syd_users u ON (a.access_type_id = u.user_id)
  3. WHERE (u.user_id = 1 AND a.access_type = 'u') OR (a.access_type_id IN(SELECT group_id FROM syd_groups_members WHERE user_id = 1) AND a.access_type = 'g')
webdice
Proszę poprawić tytuł tematu, ma on opisywać problem, w innym wypadku wątek zostanie zamknięty.
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.