witam chce z bazy wyciągnąć komputery, które są odłączone oraz nie należą do grupy vip(15), Firmy(4). mam zapytanie:
SELECT LOWER(n.name) AS name, n.access AS acc, inet_ntoa(n.ipaddr) AS ip FROM nodes n, customers c, customerassignments ca WHERE n.access = '0' AND (n.ipaddr BETWEEN inet_aton('192.168.0.2') AND inet_aton('192.168.2.255') ) AND c.id = n.ownerid AND ca.customerid=c.id AND ca.customergroupid NOT IN(15,4)
niestety jeśli host należy do jeszcze jakiejś grupy to też go w wyniku uwzględnia. wszystko jest ok jeśli user należy tylko do jednej grupy. chodzi o to, że jeśli host należy do której kolwiek z grup (15,4) to nie należy to uwzględniać w wyniku. nie jestem dobry w sql to też stąd mój problem :(
podrzuci ktoś zapytanie? z góry dzięki
W dniu 29.05.2012 11:50, Marcin napisał(a):
witam chce z bazy wyciągnąć komputery, które są odłączone oraz nie należą do grupy vip(15), Firmy(4). mam zapytanie:
SELECT LOWER(n.name [1]) AS name, n.access AS acc, inet_ntoa(n.ipaddr) AS ip FROM nodes n, customers c, customerassignments ca WHERE n.access = 0 AND (n.ipaddr BETWEEN inet_aton(192.168.0.2) AND inet_aton(192.168.2.255) ) AND c.id [2] = n.ownerid AND ca.customerid=c.id [3] AND ca.customergroupid NOT IN(15,4)
niestety jeśli host należy do jeszcze jakiejś grupy to też go w wyniku uwzględnia. wszystko jest ok jeśli user należy tylko do jednej grupy. chodzi o to, że jeśli host należy do której kolwiek z grup (15,4) to nie należy to uwzględniać w wyniku. nie jestem dobry w sql to też stąd mój problem :(
podrzuci ktoś zapytanie? z góry dzięki
Ja bym nie składał tabel w FROM, ale w WHERE zrobił podzapytanie: AND NOT EXISTS (SELECT id FROM customerassignments ca WHERE ca.customergroupid IN (15,4)).
W dniu 29.05.2012 11:57, Tomasz Chiliński napisał(a):
W dniu 29.05.2012 11:50, Marcin napisał(a):
witam chce z bazy wyciągnąć komputery, które są odłączone oraz nie należą do grupy vip(15), Firmy(4). mam zapytanie:
SELECT LOWER(n.name [1]) AS name, n.access AS acc, inet_ntoa(n.ipaddr) AS ip FROM nodes n, customers c, customerassignments ca WHERE n.access = 0 AND (n.ipaddr BETWEEN inet_aton(192.168.0.2) AND inet_aton(192.168.2.255) ) AND c.id [2] = n.ownerid AND ca.customerid=c.id [3] AND ca.customergroupid NOT IN(15,4)
niestety jeśli host należy do jeszcze jakiejś grupy to też go w wyniku uwzględnia. wszystko jest ok jeśli user należy tylko do jednej grupy. chodzi o to, że jeśli host należy do której kolwiek z grup (15,4) to nie należy to uwzględniać w wyniku. nie jestem dobry w sql to też stąd mój problem :(
podrzuci ktoś zapytanie? z góry dzięki
Ja bym nie składał tabel w FROM, ale w WHERE zrobił podzapytanie: AND NOT EXISTS (SELECT id FROM customerassignments ca WHERE ca.customergroupid IN (15,4)).
Zabrakło warunku dla klienta w podzapytaniu: AND NOT EXISTS (SELECT id FROM customerassignments ca WHERE ca.customerid = c.id AND ca.customergroupid IN (15,4)).
W dniu 29 maja 2012 11:58 użytkownik Tomasz Chiliński < tomasz.chilinski@chilan.com> napisał:
Zabrakło warunku dla klienta w podzapytaniu: AND NOT EXISTS (SELECT id FROM customerassignments ca WHERE ca.customerid = c.id AND ca.customergroupid IN (15,4)).
wielkie dzięki. jednak co doświadczenie to doświadczenie.
uczestnicy (2)
-
Marcin
-
Tomasz Chiliński