Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SELECT Statement
blacha23
post 29.06.2009, 12:28:11
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.06.2009

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


otoz do mojej nazy danych dodalem nastepujace wpisy

  1. INSERT INTO pracownik (pid,name,dzial) VALUES (1,'Ingo Schmitz',1)
  2. INSERT INTO pracownik (pid,name,dzial) VALUES (2,'Marie Bauer',1)
  3. INSERT INTO pracownik (pid,name,dzial) VALUES (3,'Herbert Knecht',1)
  4. INSERT INTO pracownik (pid,name,dzial) VALUES (4,'Veit Herzog',1)
  5. INSERT INTO pracownik (pid,name,dzial) VALUES (5,'Tim Kramer',2)
  6. INSERT INTO pracownik (pid,name,dzial) VALUES (6,'Heike Tesch',2)
  7. INSERT INTO pracownik (pid,name,dzial) VALUES (7,'Luise Droste',2)
  8. INSERT INTO pracownik (pid,name,dzial) VALUES (8,'Peter Meier',3)
  9. INSERT INTO pracownik (pid,name,dzial) VALUES (9,'Konrad Trumpf',3)
  10.  
  11.  
  12. INSERT INTO dzial (aid,name,kierownik) VALUES (1,'Abt. Eisenteile',1)
  13. INSERT INTO dzial (aid,name,kierownik) VALUES (2,'Abt. Plastikteile',6)
  14. INSERT INTO dzial (aid,name,kierownik) VALUES (3,'Abt. Aluteile',8)



chce teraz napisac polecenie SELECT, zeby wybilo mi wszystkie nazwiska z dzalu, ktorego kierownikiem jest Peter Meier, czyli Peter Meier i Konrad Trumpf
wiem jak napisac SELECT, zeby wybralo dzial, ktory prowadzi Peter Meier

  1. SELECT p.dzial FROM pracownik p, dzial d WHERE p.name='Peter Meier' AND p.pid=d.kierownik


nie wiem tylko jak polaczyc to zeby mi to zastosowalo na pracownikow i wyfiltrowalo wszystkich z tego dzialu
z gory dzieki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
piotrooo89
post 29.06.2009, 12:40:55
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  1. SELECT * FROM pracownik, dzial WHERE dzial=3


tak? bo kurcze nie rozumiem.


--------------------
Go to the top of the page
+Quote Post
blacha23
post 29.06.2009, 12:51:23
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.06.2009

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


takie rozwiazanie to mam juz, ale chce zeby to bylo ogolne i w przyszlosci jesli musialbym zmienic name to odrazu autom. by sie zmienil dzial i wypluloby odpowiednich pracownikow...
myslalem miej wiecej o czyms takim

  1. SELECT p.name FROM pracownik p,(SELECT p.dzial FROM pracownik p, dzial d WHERE p.name='Peter Meier' AND p.pid=d.kierownik )x
  2. WHERE p.dzial=x


tylko to nie dziala

Ten post edytował blacha23 29.06.2009, 12:54:49
Go to the top of the page
+Quote Post
piotrooo89
post 29.06.2009, 12:55:08
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




kurcze nie czaje. przecież jak zmienisz nazwę działu to dalej będzie działać.

btw. piszesz strasznie zawile... albo ja nie mogę nadążyć :|


--------------------
Go to the top of the page
+Quote Post
blacha23
post 29.06.2009, 13:08:09
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.06.2009

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


jeszcze raz od poczatku,
mam nastepujace wpisy

  1. INSERT INTO pracownik (pid,name,dzial) VALUES (1,'Ingo Schmitz',1)
  2. INSERT INTO pracownik (pid,name,dzial) VALUES (2,'Marie Bauer',1)
  3. INSERT INTO pracownik (pid,name,dzial) VALUES (3,'Herbert Knecht',1)
  4. INSERT INTO pracownik (pid,name,dzial) VALUES (4,'Veit Herzog',1)
  5. INSERT INTO pracownik (pid,name,dzial) VALUES (5,'Tim Kramer',2)
  6. INSERT INTO pracownik (pid,name,dzial) VALUES (6,'Heike Tesch',2)
  7. INSERT INTO pracownik (pid,name,dzial) VALUES (7,'Luise Droste',2)
  8. INSERT INTO pracownik (pid,name,dzial) VALUES (8,'Peter Meier',3)
  9. INSERT INTO pracownik (pid,name,dzial) VALUES (9,'Konrad Trumpf',3)
  10.  
  11.  
  12. INSERT INTO dzial (aid,name,kierownik) VALUES (1,'Abt. Eisenteile',1)
  13. INSERT INTO dzial (aid,name,kierownik) VALUES (2,'Abt. Plastikteile',6)
  14. INSERT INTO dzial (aid,name,kierownik) VALUES (3,'Abt. Aluteile',8)


i chce wyciagnac pracownikow z dzialu, ktorym kieruje Peter Meier poprostu, ale rozwiazanie nie ma sie opierac na wpisach do tabel, tylko ogolnie na tabelach


  1. CREATE TABLE pracownik(pid INTEGER NOT NULL PRIMARY KEY,name VARCHAR(100),dzial INTEGER)
  2.  
  3. CREATE TABLE dzial(did INTEGER NOT NULL PRIMARY KEY,name VARCHAR(100),kierownik INTEGER,FOREIGN KEY (kierownik) REFERENCES pracownik (pid))



wpisy maja pozniej tylko pomoc sie upewnic, ze Select Statement dobrze jest napisane
Go to the top of the page
+Quote Post
skowron-line
post 29.06.2009, 13:12:34
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(piotrooo89 @ 29.06.2009, 11:40:55 ) *
  1. SELECT * FROM pracownik, dzial WHERE dzial=3

Chyba nigdy nie połączyłeś 2 tabel.

Cytat
ale rozwiazanie nie ma sie opierac na wpisach do tabel, tylko ogolnie na tabelach

Może pokaż jak wynik zapytania powinien wyglądać może będzie prościej bo z tego co napisałeś to ja również nic nie kumam.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
blacha23
post 29.06.2009, 13:17:13
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.06.2009

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


wynikiem zapytania powinny byc nazwiska pracownikow, ktorzy pracuja w dziale, ktory prowadzi Peter Meier,
czyli Peter Meier i Konrad Trumpf

zapytanie ma sie opierac na 2 tabelach utworzonych wczesniej

  1. CREATE TABLE pracownik(pid INTEGER NOT NULL PRIMARY KEY,name VARCHAR(100),dzial INTEGER)
  2.  
  3. CREATE TABLE dzial(did INTEGER NOT NULL PRIMARY KEY,name VARCHAR(100),kierownik INTEGER,FOREIGN KEY (kierownik) REFERENCES pracownik (pid))


i myslalem nad takim rozwiazaniem

  1. SELECT p.name FROM pracownik p,(SELECT p.dzial FROM pracownik p, dzial d WHERE p.name='Peter Meier'AND p.pid=d.kierownik)x WHERE p.dzial=x


tylko dostaje nastepujacy blad
"X" is not valid in the context where it is used. SQLSTATE=42703

Ten post edytował blacha23 29.06.2009, 13:24:49
Go to the top of the page
+Quote Post
NoiseMc
post 29.06.2009, 13:58:21
Post #8





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

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


  1. SELECT p.name FROM pracownik p WHERE p.dzial = (SELECT d.did FROM dzial d INNER JOIN pracownik p ON d.kierownik = p.pid AND p.name LIKE 'Peter Meier')


--------------------
Go to the top of the page
+Quote Post
blacha23
post 29.06.2009, 14:28:35
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 26.06.2009

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


Cytat(NoiseMc @ 29.06.2009, 14:58:21 ) *
  1. SELECT p.name FROM pracownik p WHERE p.dzial = (SELECT d.did FROM dzial d INNER JOIN pracownik p ON d.kierownik = p.pid AND p.name LIKE 'Peter Meier')


wielkie dzieki, o to chodzilo
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: 14.08.2025 - 03:45