Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Aliasy
el Santiago
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 31.08.2007

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


Aliasy w MySQL działają na zasadzie:

SELECT cos as v, cos2 as vu itd.

A ja chcę przyspieszyc prace i miec: SELECT * ... no właśnie, wszystko z jakimś aliase - ustalonym w tym zapytaniu, czy zatem da się z tabeli
id_user | login

SELECT *... aby wyświetlił wszystkie pola bazy z prefiksem u. czyli u.id_user itd. bez konieczności wpisywania w zapytanie pobieranych komórek.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Podaj może jakieś przykładowe dane i jaki efekt chcesz uzyskać, bo ja póki co nie wiem o co Ci chodzi.
Go to the top of the page
+Quote Post
el Santiago
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 31.08.2007

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


Generalnie chodzi o to - dla dowolnej tabeli w bazie - że select ma np. format:

SELECT * FROM....

`users`:
id_user | login

A ja chcę jednym zapytaniem, maksymalnie uproszczonym, pobrać dane z prefiksem (jako 'aliasy'):
Czyli wykonać bezpośrednio zapytanie:
SELECT id_user as u.id_user, login as u.login FROM...

Jeśli mam 30 pól w bazie, to nie jest wydajnym sposób zapisywania każdego z nich w zapytaniu jako: ... pole1 as p.pole1, pole 2 as p.pole2.

Po co to?

Kiedy pobieram dane LEFT JOIN lub innym typem, nie uzyskam w wykonanym zapytaniu danych z pól, które występują w obu tabelach ('dublują się'). Np. id_user w dwóch tabelach mają identyczne wartości, ale ich nie pobiorę w JOIN'ie.
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Możesz zrobić tak, że podasz te pola, które się dublują, np.
  1. SELECT a.*, a.user_id AS a_user_id FROM ...

ale ja bym się zastanowił po co to wszystko? Skoro te pola mają te same wartości to po co tak cudować?
Go to the top of the page
+Quote Post
el Santiago
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 31.08.2007

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


Hmm, jeśli wezmę:

`users`:
id_user | login

`avatars`: (załóżmy, że user może mieć x avków, stąd ta tabela)
id_avatar | id_user | link

to:

SELECT * FROM users LEFT JOIN avatars ON (users.id_user = avatars.id_users)

NIE zwrócie nam w wyniku id_user, prawda?

Group by?
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Chyba raczej powinineneś odwrotnie zapisać to zapytanie: najpierw wybierasz dane z avatars, a później dołączasz tabelę użytkowników. No ale nieważne. Twój kod zwróci takie pola:
id_user, id_avatar, login, link
Po co dublować id_user?
Go to the top of the page
+Quote Post
el Santiago
post
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 31.08.2007

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


W takim wywołaniu wyrzuciło mi puste id_user, a reszte danych ok.

Pomogło docelowo group by.

Gracias,
Go to the top of the page
+Quote Post

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: 22.08.2025 - 18:13