Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Error: Column 'profile_field_id' in from clause is ambiguous
Forum PHP.pl > Forum > Bazy danych > MySQL
malwin23
Witam.
Wczoraj zakupiłem skrypt skadate 5.0 ze strony skadate.com. Niestety nie mogę się dodzwonić do obsługi technicznej. Wyskakuje mi taki komunikat:


  1. Error: COLUMN 'profile_field_id' IN FROM clause IS ambiguous
  2. IN query: "SELECT `field`.*, `match_field_name`.`name` AS `matching`, `match_field`.`match_type` AS `matching_type` FROM `skadate_profile_field` AS `field` LEFT JOIN `skadate_link_profile_field_match` AS `match_field` ON `field`.`profile_field_id`=`match_field`.`match_profile_field_id` LEFT JOIN `skadate_profile_field` AS `match_field_name` USING ( `profile_field_id` )"
  3. debug string: ""


Nie wiem co z tym zrobić. Proszę kogoś o pomoc w rozwiązaniu tego problemu!
Cienki1980
Spróbuj końcówke zapytania zmienić w ten sposób:
  1. ON `field`.`profile_field_id`=`match_field`.`match_profile_field_id`
  2. LEFT JOIN `skadate_profile_field` AS `match_field_name`
  3. USING ( `field`.`profile_field_id` )";
spryciula
to oznacza, że kolumna 'profile_field_in', jest zdefiniowana niejednoznacznie, w zapytaniu sql'owym, występuje dwa razy ta sama nazwa kolumny, z dwóch tabel i silnik sql'owy, ma problem z której tabeli brać dane
malwin23
Dzięki Cienki1980 za podpowiedź ale to nic nie dało wyskakuje teraz komunikat niepoprawnie zdefiniowanej składni:
  1. Error: You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near '.`profile_field_id` )' at line 4
  2. IN query: "SELECT `field`.*, `match_field_name`.`name` AS `matching`, `match_field`.`match_type` AS `matching_type` FROM `skadate_profile_field` AS `field` LEFT JOIN `skadate_link_profile_field_match` AS `match_field` ON `field`.`profile_field_id`=`match_field`.`match_profile_field_id` LEFT JOIN `skadate_profile_field` AS `match_field_name` USING ( `field`.`profile_field_id` )"
  3. debug string: ""


Tak nazwa kolumny `profile_field_id` występuje dwa razy w bazie danych jeszcze w jednej tabeli `skadate_profile_field_values`
czyli w tych dwóch tabelach:

`skadate_profile_field_values`
`skadate_profile_field`

Coś jest z tym na pewno
jak zdefiniować USING, żeby było wiadomo, że chodzi o tabelę `skadate_profile_field` questionmark.gif
USING ( `profile_field_id` )

Kurczę brak wiedzy to jest bolączka hehe.

A tak przy okazji to jest cały kod tej strony:
  1. <?php
  2.  
  3. /**
  4.  * This module initializes all profile's fields attributes and values
  5.  */
  6.  
  7. $get_pr_fields_query = "SELECT `field`.*, `match_field_name`.`name` AS `matching`, `match_field`.`m
    atch_type` AS `matching_type` 
  8. FROM `".TBL_PROF_FIELD."` AS `field` 
  9. LEFT JOIN `".TBL_PROF_FIELD_MATCH_LINK."` AS `match_field` ON `field`.`profile_field_id`=`match_field`.`match_profi
    le_field_id`
  10. LEFT JOIN `".TBL_PROF_FIELD."` AS `match_field_name` USING ( `profile_field_id` )";
  11.  
  12. $_PR_FIELDS = MySQL::fetchArray( $get_pr_fields_query, 'name' );
  13.  
  14. $compiled_pr_fields_val_query = sql_compile_placeholder( "SELECT `value` FROM `".TBL_PROF_FIELD_VALUE."` WHERE 
  15. `profile_field_id`=?
  16. ORDER BY `order`" );
  17.  
  18. foreach ( $_PR_FIELDS as $all_pr_key => $all_pr_value )
  19. {
  20. if ( ( $_PR_FIELDS[$all_pr_key]['matching'] ) )
  21. {
  22. $profile_field_id = $_PR_FIELDS[$_PR_FIELDS[$all_pr_key]['matching']]['profile_field_id'];
  23. $_PR_FIELDS[$all_pr_key]['cols_count'] = $_PR_FIELDS[$_PR_FIELDS[$all_pr_key]['matching']]['cols_count'];
  24. }
  25. else 
  26. {
  27. $profile_field_id = $_PR_FIELDS[$all_pr_key]['profile_field_id'];
  28. }
  29.  
  30. $pr_fields_val_query = sql_placeholder( $compiled_pr_fields_val_query, $profile_field_id );
  31.  
  32. $_PR_FIELDS[$all_pr_key]['values'] = MySQL::fetchArray( $pr_fields_val_query, 0 );
  33. }
  34. ?>


Wysyłam Ci link Spryciulo z całym skryptem na PW. Jak mi pomożesz to zrobić to tak z 10 zł CI wyślę na konto jestem biedny teraz jak mysz polna spłókany do reszty.
spryciula
żadnej kasy biggrin.gif biggrin.gif


a co dokładnie ten sql ma wyciągnąć z bazy i do czego to jest wykorzystywane??



jedyne co mi teraz przychodzi do głowy to:

  1. SELECT `field`.*, `match_field_name`.`name` AS `matching`, `match_field`.`match_type` AS `matching_type`
  2. FROM `skadate_profile_field` AS `field`
  3. LEFT JOIN `skadate_link_profile_field_match` AS `match_field`
  4. ON `field`.`profile_field_id`=`match_field`.`match_profile_field_id`
  5. LEFT JOIN `skadate_profile_field` AS `match_field_name`
  6. ON `field`.`profile_field_id`=`match_field_name`.`profile_field_id`



ale nie wiem, czy o to dokładnie chodzi(edit o 02:11 nie, to nie to po zainstalowaniu tego skryptu i uruchomieniu go, sieje tak gęsto błędami, że już nie wiem o co chodzi, musisz skontaktować się z supportem) .
pozdrawiam
malwin23
Dałem ten kod co mi podałaś zamiast poprzedniego i o dziwo poszedł tylko z błędami właśnie. Mimo wszystko dzięki piękne raz jeszcze. Jakoś sobie poradzę z tym fantem:)
Buźka
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.