Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sqlite]Podwójne zapytanie, ..jesli dam where pole in(SELECT..) to sqlite nie dziala,a w mysql tak
bartg
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 4.07.2007
Skąd: Berlin

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) , a na mysql działa wyśmienicie zapytanie

Ten post edytował bartg 4.01.2009, 22:02:03
Go to the top of the page
+Quote Post
memory
post
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


jakis konkretny blad wyskakuje?
Go to the top of the page
+Quote Post
blooregard
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




SQLite nie obsługuje któregoś ze złączeń (chyba właśnie LEFT), ale nie jestem pewien do końca. Sprawdź w dokumentacji.
Go to the top of the page
+Quote Post
bartg
post
Post #4





Grupa: Zarejestrowani
Postów: 226
Pomógł: 25
Dołączył: 4.07.2007
Skąd: Berlin

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

EDITED:
Dobra, mam rozwiązanie. Może się komuś na przyszłośc przyda, bo to dziwny błędzik (IMG:http://forum.php.pl/style_emoticons/default/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ść (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Po przeniesiesniu tego warunku do where wyszlo mi takie działające zapytanie (IMG:http://forum.php.pl/style_emoticons/default/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')


Ten post edytował bartg 4.01.2009, 00:22:57
Go to the top of the page
+Quote Post
webdice
post
Post #5


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Proszę poprawić tytuł tematu, ma on opisywać problem, w innym wypadku wątek zostanie zamknięty.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 16:01