Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Relacje Miedzy Tabelami - Select
Forum PHP.pl > Forum > Bazy danych > MySQL
treewood
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
Parti
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
treewood
Tyle, ze wynik zapytania jest rozny od zapytania z INNER JOIN a tymbardziej z LEFT JOIN itp.
Parti
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.