![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 21.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kod:
Kod $sql = "SELECT u.user_id FROM " . USERS_TABLE . " u WHERE u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ") ORDER BY $order_by"; Natomiast jeżeli dodam: Kod $sql = "SELECT u.user_id, ud.user_id, d.pf_is_partner as is_partner, d.pf_is_partner_ver as is_partner_veryfied FROM " . USERS_TABLE . " u, ". PROFILE_FIELDS_DATA_TABLE ." d LEFT JOIN ". PROFILE_FIELDS_DATA_TABLE ." ud ON (d.user_id = ud.user_id) WHERE u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ") ORDER BY $order_by"; Źle bierze pod uwagę ORDER BY... Co robię źle? PS. Wersja MySQL: 4.0.16 Ten post edytował spyro 15.10.2008, 12:01:27 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 382 Pomógł: 22 Dołączył: 21.05.2007 Skąd: Elbląg Ostrzeżenie: (0%) ![]() ![]() |
Kod pierwszy działa prawidłowo?
a może zastosowałbyś OR? ;p |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Brakuje Ci połączenia między aliasami 'u' oraz 'd' w wyniku czego otrzymujesz iloczyn kartezjański (każdy z każdym). Musisz dodać jeszcze (strzelam) u.user_id=d.user_id w warunku.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 21.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Sporo poprzerabiałem i wygląda to tak:
Kod $sql = 'SELECT u.*, d.pf_is_partner as is_partner, d.pf_is_partner_ver as is_partner_veryfied FROM ' . USERS_TABLE . ' u LEFT JOIN '.PROFILE_FIELDS_DATA_TABLE.' d ON (u.user_id = d.user_id)'; I wyskakuje mi błąd: Column: 'user_id' in where clause is ambiguous [1052] ![]() ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 382 Pomógł: 22 Dołączył: 21.05.2007 Skąd: Elbląg Ostrzeżenie: (0%) ![]() ![]() |
http://translate.pl/odp.php4?direction=1&word=ambiguous
według mnie błąd siedzi tutaj: ON (u.user_id = d.user_id) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 897 Pomógł: 40 Dołączył: 16.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hm, a nie przejdzie zamiast 'ON (u.user_id = d.user_id)':
'USING (user_id)'? -------------------- how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
według mnie błąd siedzi tutaj: ON (u.user_id = d.user_id) Mylisz się. @spyro: Wydaje mi się, że kod, który podałeś nie powoduje opisanego przez Ciebie błędu. Problem z "ambiguous column" pojawia się w momencie kiedy chcesz wyświetlić wartości z danej kolumny w przypadku, gdy występuje ona pod taką samą nazwą w kilku tabelach. Przykładowo:
Spowoduje błąd, ponieważ nie wiadomo o które pole 'user_id' chodzi - czy oto z tabeli użytkowników, czy o to z tabeli profili (pomijam fakt, że są to te same wartości). Receptą na takie zjawisko będzie jawne określenie, o którą kolumnę chodzi czyli zamiast 'user_id' np. 'u.user_id':
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 09:34 |