Loading:

Promocja Helion.pl

Podzapytania po słowie FROM - MySQL

Podzapytania można również wykonywać po słowie FROM, aby porównać wyniki z różnych tabel.

 

Składnia jest diwoczna na listingu 1.0:

 

 

Klauzula AS jest obowiązkowa, gdyż każda tablica występująca zwykle po słowie FROM musi mieć nazwę. Wszystkie kolumny z listy kolumn podzapytania muszą mieć nazwy unikalne.

 

Na przykład, załóżmy, że mamy następującą tablicę:(patrz listing 2.0)

 

 

wtedy możemy skonstruować następujące zapytanie z podzapytaniem po słowie FROM: (patrz listing 3.0)


 

Wynik jest następujący:

Result: 2, '2', 4.0.


Następny przykład:

Załóżmy, że chcemy znać średnią zestawu sum z kolumny zgrupowanej tablicy. Następujące zapytanie nie zadziała: (patrz listing 4.0)


 

Natomiast można uzyskac odpowiedni wynik, posługując się podzapytaniem: (patrz listing 5.0)


 

Zauważmy, że nazwa kolumny użyta w podzapytaniu (sum_column1) jest użyta w zapytaniu zewnętrznym.



Napisz Artykuł

Listing

--Listing 1.0
SELECT ... FROM (podzapytanie) AS nazwa ...

--Listing 2.0
CREATE TABLE tab1 (s1 INT, s2 CHAR(5), s3 FLOAT);
INSERT INTO tab1 VALUES (1,'1',1.0);
INSERT INTO tab1 VALUES (2,'2',2.0);
WHERE sb1 > 1;

--Listing 3.0
SELECT sb1,sb2,sb3
FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM tab1) AS sb
WHERE sb1 > 1;

--Listing 4.0
SELECT AVG(SUM(col)) FROM tab1 GROUP BY col1;

--Listing 5.0
SELECT AVG(sum_col1)
FROM (SELECT SUM(col) AS sum_col1
FROM tab1 GROUP BY col1) AS tab1;


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=5287

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38323
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors