Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] Różna konstrukcja zapytania ale ten sam wynik
yalus
post
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


witam,

czy ponisze dwa zapytania powinny zwrócić taką samą liczbe rekordów?

  1. SELECT * FROM tabela1,tabela2 WHERE tabela1.id=tabela2.id
  2. SELECT * FROM tabela1 WHERE id IN (SELECT id FROM tabela2 WHERE tabela1.id=tabela2.id)



pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Powyższe dwa zapytania mogą zwrócić identyczną ilość danych jedynie w przypadku, gdy wartości pól mobile nie powtarzają się w obrębie tabeli. Przyjrzyj się uważnie. W pierwszym zapytaniu masz dwie tabele złączone przez INNER JOIN, czyli automatycznie robisz z nich iloczyn kartezjański. Jeśli w "A" masz dwa wiersze z wartością "123456" i w B też dwa wiersze z czymś takim, daje Ci to cztery wiersze wynikowe:

A.1 z B.1
A.1 z B.2
A.2 z B.1
A.2 z B.2

W drugim przypadku pobierasz dane z jednej tabeli. Podzapytanie służy Ci jedynie do wybrania dozwolonych wartości mobile, a więc uzyskujesz:

A.1
A.2

Ot i cała filozofia.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 20:25