Autor Zpráva
Enko
Profil
Ahoj,
hledám řešení jak jinak sestavit následující:
Mám dvě tabulky (Hardware a Assets) a sestavuji dotaz, který je určen pro vyhledávání. K tabulce Hardware potřebuji připojit jeden sloupec z tabulky Assets na základě stejných hodnot ve sloupci Owner_ID (který je v obou tabulkách).
To co mám je zde:
SELECT 
Hardware.Name,
Hardware.Serial_Num,
Hardware.Product,
Hardware.UDF_MPK,
Assets.Warranty_Exp 
FROM Hardware
LEFT JOIN 
Assets ON Hardware.Owner_ID=Assets.Owner_ID 
WHERE 
Hardware.Serial_Num LIKE '%356146052951234%'
Nicméně mi to vrátí i několik desítek řádků, i když by měl být jenom jeden. (Pokud položím stejný dotaz jen bez toho LEFT JOINu, tak mi to vrátí jen jeden řádek) Všechny sloupce ve výsledku mají stejnou hodnotu kromě sloupce Warranty_Exp, který pokaždé nabývá jinou hodnotu. Poradí mi prosím někdo, co dělám špatně? Případná další data doplním na přání.
Taps
Profil
Enko:
zkus místo LEFT JOIN použít INNER JOIN
Kajman
Profil
Enko:
V podmínce assets kromě vlastníka by asi měla být navíc podmínka na serial number, nebo něco takového. Takto se totiž přiřadí všechny položky z assets se stejným owner_id.
Enko
Profil
Tak doplněno o podmínku na serial number a je to tak, jak potřebuji.

takto vypadá výsledek:
SELECT 
Hardware.Name,
Hardware.Serial_Num,
Hardware.Product,
Hardware.UDF_MPK,
Assets.Warranty_Exp 
FROM Hardware
LEFT JOIN 
Assets ON Hardware.Owner_ID=Assets.Owner_ID AND  Hardware.Serial_Num=Assets.Serial_Num
WHERE 
Hardware.Serial_Num LIKE '%356146052951234%'

Děkuji všem! :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: