Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql][php] Column X in field list is ambiguous
lukash82
post
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


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, Ł.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Musisz zastosować alias żeby nazwy były inne.
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 883
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

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


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();
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
KsaR
post
Post #5





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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.
Go to the top of the page
+Quote Post
lukash82
post
Post #6





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


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

Ten post edytował lukash82 29.10.2015, 17:37:31
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: 15.09.2025 - 22:05