błąd baza danych

0

witam mam problem z tym

SYSERR: Jul  4 14:28:25 :: DirectQuery: AsyncSQL::DirectQuery : mysql_query error: Column 'name' in field list is ambiguous
query: SELECT empire, pid, name, money, windate FROM monarch a, player  b where a.pid=b.id
SYSERR: Jul  4 14:28:30 :: Process: FDWATCH: peer null in event: ident 21
 

o co chodzi?
name w monarch mam jako varchar 24

0

Masz pole name zarówno w tabeli monarch jak i player, przez co baza nie wie, o które pole Tobie tak naprawdę chodzi.

0
Patryk27 napisał(a):

Masz pole name zarówno w tabeli monarch jak i player, przez co baza nie wie, o które pole Tobie tak naprawdę chodzi.

co w takiej sytuacji powinnem zrobic?

0

Wskazać wprost, z której tabeli chcesz pobrać nazwę, czyli zamiast samego name wstawić a.name lub b.name.

Najlepiej jest zawsze wskazywać wprost tabelę, z której pobierasz dane, dzięki czemu nie będziesz miał takich kwiatków.
Rozważ na przykład nieco bardziej skomplikowane zapytanie:

SELECT
	z.`id_zamowienia`,
	concat(k.`imie`, ' ', k.`nazwisko`),
	sum(p.`cena` * p.`ilosc`)

FROM
	`zamowienia` z
	
LEFT JOIN
	`zamowienia_produkty` zp USING (id_zamowienia)
	
LEFT JOIN
	`klienci` k USING (id_produktu)
	
GROUP BY
	z.`id_zamowienia`

Dzięki temu, że każde odwołanie do pola odnosi się po aliasie nazwy tabeli, nie trzeba kombinować "co gdzie przychodzi", a przy okazji nie ma szans na to, że ktoś kiedyś dołoży na przykład do tabeli zamowienia pole cena, niszcząc nam zapytanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1