Seit langem wieder ein MySQL-Problem. Ich habe 3 Tabellen:
Tabelle items_prot, mit den Feldern:
`itemid` => int auto_increment
`name` => varchar 255
Tabelle items_vendors_inventory mit den Feldern:
`inventid` => int auto_increment
`itemid` => Referenz zur Tabelle items_prot
`owner` => Besitzer-ID, referenziert mit items_vendorlist.vendorid
Tabelle items_vendorlist mit den Feldern
`vendorid` => int auto_increment
`vendorname` => varchar 255
Ich habe als einzige Angabe "items_vendorlist.vendorname".
Ich will nun alle items aus der Tabelle items_prot holen. Dabei soll die Tabelle mit der Tabelle items_vendors_inventory verknüpft werden über die itemid, sofern vorhanden. In der zu verknüpfenden Tabelle (items_vendor_inventory) gibt es das Feld owner, das mit einem Namen zusammen in der Tabelle items_vendorlist steht, wobei ich nicht die ID kenne, sondern nur den Namen.
Nach rumprobieren hab ich einen Join mit Subquery gemacht, der auch so funktioniert, wie ich will:
SELECT
prot.`name` AS 'Name',
prot.`desc` AS 'Beschreibung',
prot.`value1` AS 'Stärke',
prot.`price` AS 'Preis',
inv.`inventid` AS 'Inventar-ID'
FROM
`items_prot` prot
LEFT OUTER JOIN
`items_vendor_inventory` inv
ON
prot.itemid = inv.itemid
WHERE
prot.class1 = "Waffe" AND (
inv.owner = (
SELECT
vendorid
FROM
items_vendorlist
WHERE
vendorname='market_greatbasle::weapon'
) OR
inv.owner IS NULL
)
Nun wollte ich wissen, ob das das "schönste" ist, oder es noch eine schönere Möglichkeit gibt.