Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] SELECT w tabeli
vanvar
post 14.06.2009, 12:49:43
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.05.2007

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


Witam,
Mam pewien problem. Otóż posiadam 3 tabele:
  1. CREATE TABLE katalogi (
  2. id int AUTO_INCREMENT PRIMARY KEY,
  3. url char(30) NOT NULL
  4. ) ENGINE=InnoDB;
  5.  
  6. CREATE TABLE projekty (
  7. id int AUTO_INCREMENT PRIMARY KEY,
  8. title char(30) NOT NULL
  9. ) ENGINE=InnoDB;
  10.  
  11. CREATE TABLE STATUS (
  12. idstatus int AUTO_INCREMENT PRIMARY KEY,
  13. id_projektu int,
  14. id_katalogu int,
  15. FOREIGN KEY (id_projektu) REFERENCES projekty(id),
  16. FOREIGN KEY (id_katalogu) REFERENCES katalogi(id)
  17. ) ENGINE=InnoDB;


W tabeli katalogi mam kilka (powiedzmy 4) adresów katalogów stron. W tabeli projekty mam jeden projekt - stronę www, którą dodaje do katalogów. Tabela status zawiera operacje dodania katalogu do projektu. I teraz tak:

Mam katalogi:
a.com
b.com
c.com
d.com

projekty:
mojawitryna

oraz status:
1 1, czyli pierwszy projekt dodałem do pierwszego katalogu.

Pytanie: jak wyświetlić katalogi, do których mój projekt już został dodany oraz katalogi, do których projekt nie został jeszcze dodany? Na powyższym przykładzie pierwszy select ma zwrócić:
a.com
a drugi:
b.com
c.com
d.com

Uff, chyba wszystko smile.gif
Z góry dziękuję za pomoc.

Pierwsze zaptanie chyba mam, a co z drugim, ma ktos pomysl?

  1. $q = 'select * from katalogi where not id=(select id_katalogu from status s where s.id_projektu='.$_GET['project'].')';


Ten post edytował vanvar 13.06.2009, 22:30:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
user123
post 14.06.2009, 13:46:18
Post #2





Grupa: Zarejestrowani
Postów: 231
Pomógł: 2
Dołączył: 2.08.2006
Skąd: Poznań

Ostrzeżenie: (10%)
X----


może coś takiego:

pierwsze:
  1. SELECT katalogi.url FROM katalogi INNER JOIN STATUS ON STATUS.id_katalogu=katalogi.id WHERE STATUS.id_projektu=1


drugie:
  1. SELECT katalogi.url FROM katalogi INNER JOIN STATUS ON STATUS.id_katalogu!=katalogi.id WHERE STATUS.id_projektu=1


to tak z głowy więc może być nie do końca poprawnie;)


--------------------
Youtube - Miedzynarodowa wersja: Wyposażenie siłowni
Go to the top of the page
+Quote Post
vanvar
post 14.06.2009, 17:30:58
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 26.05.2007

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


  1. $q='select * from katalogi k where k.id in (select id_katalogu from status s where s.id_projektu='.$_GET['project'].')';


Wymyśliłem coś takiego i działa :-)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 07:57