Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacje Miedzy Tabelami - Select
treewood
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


Czy jest mozliwosc wykonania SELECT'a bez wymuszania laczenia na key'ach jesli sa stworzone klucze?

glupi przyklad:

  1. CREATE TABLE a (
  2. iA SMALLINT(4) NOT NULL AUTO_INCREMENT,
  3. imie VARCHAR(40),
  4. PRIMARY KEY (iA)
  5. );
  6. CREATE TABLE b (
  7. iB SMALLINT(4) NOT NULL AUTO_INCREMENT,
  8. iA SMALLINT(4) NOT NULL,
  9. nazwisko VARCHAR(40),
  10. PRIMARY KEY (iB, iA)
  11. );
  12.  
  13. ALTER TABLE b
  14. ADD FOREIGN KEY (iA) REFERENCES a (iA);


czy jest mozliwe stworzenie zapytania w stylu

  1. SELECT a.imie, b.nazwisko FROM a, b
  2. #zamiast
  3. SELECT a.imie, b.nazwisko FROM a, b WHERE a.iA=b.iA
  4. SELECT a.imie, b.nazwisko FROM a INNER JOIN b ON a.iA=b.iA


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Parti
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 22.07.2004

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


Nie.

Jeśli nazwy pól po których łączysz tabele tak samo się nazyają (jak w tym przykładzie) można skrótowo zapisać:
  1. SELECT a.imie, b.nazwisko FROM a NATURAL JOIN b
Go to the top of the page
+Quote Post
treewood
post
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


Tyle, ze wynik zapytania jest rozny od zapytania z INNER JOIN a tymbardziej z LEFT JOIN itp.


--------------------
Działam w OpenSolution.org, autor Quick.Cms i Quick.Cart już od ponad 10 lat
Go to the top of the page
+Quote Post
Parti
post
Post #4





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 22.07.2004

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


Cytat(treewood @ 2004-08-30 23:30:56)
Tyle, ze wynik zapytania jest rozny od zapytania z INNER JOIN a tymbardziej z LEFT JOIN itp.

Cytat z manuala:


Cytat
The NATURAL [LEFT] JOIN of two tables is defined to be semantically equivalent to an INNER JOIN or a LEFT JOIN with a USING clause that names all columns that exist in both tables.


A zatem NATURAL JOIN odpowiad INNER JOIN, a NATURAL LEFT JOIN odpowiada LEFT JOIN.
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 Aktualny czas: 20.08.2025 - 05:01