el Santiago
28.08.2008, 18:20:05
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.
nexis
28.08.2008, 18:55:52
Podaj może jakieś przykładowe dane i jaki efekt chcesz uzyskać, bo ja póki co nie wiem o co Ci chodzi.
el Santiago
28.08.2008, 19:20:21
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.
phpion
28.08.2008, 19:34:54
Możesz zrobić tak, że podasz te pola, które się dublują, np.
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ć?
el Santiago
28.08.2008, 19:40:38
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?
phpion
28.08.2008, 19:54:58
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?
el Santiago
28.08.2008, 19:57:23
W takim wywołaniu wyrzuciło mi puste id_user, a reszte danych ok.
Pomogło docelowo group by.
Gracias,
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.