Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php] Column X in field list is ambiguous
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam,

Mam problem jak w tytule i nie bardzo mogę sobie z nim poradzić.

Mam 2 tabele, w uproszczeniu:

tab1 - A: id, id_2
tab2 - B: id, id_3, view

gdzie tab1.id_2 jest zależne jeszcze od innej tabeli dlatego tabele są między sobą sparowane po A.id_2 = B.id_3

Muszę do paginacji zliczyć wszystkie rekordy zaznaczone jako widoczne w kolumnie view.

Standardowo zliczam ilość rekordów tak:

  1. $result1 = mysql_query("SELECT * FROM tab1 A, tab2 B WHERE B.id_3=A.id_2 AND B.view='on'") or die(mysql_error());
  2. $row1 = mysql_num_rows($result1);


Jednak ze względu na zdublowaną nazwę kolumny id dostaję komunikat jak w temacie...

Próbowałem więc tak:
  1. $result1 = mysql_query("SELECT A.id, A.id_2, C.view FROM tab1 A, tab2 B WHERE B.id_3=A.id_2 AND C.view='on'") or die(mysql_error());
  2. $row1 = mysql_num_rows($result1);


i tak:
  1. $result1 = mysql_query("SELECT A.id, A.id_2 FROM tab1 A JOIN tab2 B ON B.id_3=A.id_2 AND B.view='on'") or die(mysql_error());
  2. $row1 = mysql_num_rows($result1);


Ale niestety bez skutku. Jeśli ktoś może dopomóc to byłbym dźwięczny. Pozdrawiam, Ł.
viking
Musisz zastosować alias żeby nazwy były inne.
Tomplus
Co do duplowania, jeżeli masz zdublowane kolumny to możesz też użyć AS i zmienić im nazwę

SELECT A.id AS Aid
lub krótko
SELECT A.id Aid

użyj w zapytaniu jeszcze GROUP BY (B.view), a po SELECT COUNT(A.id) AS view_on
Będziesz miał zliczone wszystkie rekordy, a odwołasz się przez zwykłe mysql_fetch_array();
nospor
Zapytanie ktore podales
SELECT * FROM tab1 A, tab2 B WHERE B.id_3=A.id_2 AND B.view='on'
nie ma prawa rzucac bledem o ktorym piszesz. Podaj wiec dokladnie zapytanie, ktorego uzywasz.
Ale tak czy siak, poprostu odwoluj sie pola zawsze tak: tabela.pole - wowczas nie bedziesz mial tego bledu.
KsaR
Swoja droga, @lukash82, dodawaj do nazw kolumn oraz tabel `` zawsze.
Sa slowa kluczowe ktore nie moga byc uzyte zwyczajnie i musza byc w ``
I sa to slowa kluczowe jak np.
SELECT, WHERE, FROM, itp. W twoim przypadku moze to byc VIEW.

czyli nie view=... Tylko `view`= mimo ze to pewnie nie rozwiaze bledu ale mozesz sprobowac.
lukash82
Cześć,

Dzięki za wskazówki. Zapytanie było jak najbardziej poprawne. Błąd był jedno zapytanie wyżej w osobnym pliku, dlatego sypało mi błędami wszystko co pod nim... Tak to jest jak człowiek chce szybko coś zrobić.

@KsaR, dzięki za wskazówkę. Przyzwyczaiłem się bez ``, ale może czas to zmienić.

Pozdr, Ł.
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.