Hilf mir bitte mit meiner Auswahl. Ich habe ich Tabellenträger, die Informationen über Träger enthält: car_id, car_name, car_zones (dieser Wert ist Tabellenname, der die Zonendaten dieses Carriers hat), car_rates_exp (dieser Wert ist Tabellenname, der die Exporttarifdaten dieses Carriers hat), car_rates_imp (dieser Wert ist der Tabellenname, der die Importtarifdaten dieses Carriers enthält), car_href (dieser Wert ist href zum Tracking-API dieses Carriers)innere Join verschiedenen Tabellen, basierend auf Spalte Wert
Auch habe ich Tabelle 'orders', unter allen Feldern, hat es Spalte carrier_id , from_country, Gewicht und shipper_rate. Ich möchte eine Auswahl treffen, in der ich innere Verbindung mit Tabelle machen möchte, aber dieser Tabellenname in der Abfrage muss unterschiedlich sein, basierend auf carrier_id. Ich habe versucht, diese Abfrage zu machen, aber es funktioniert nicht:
SELECT o.id_order,
o.from_country,
c.firstname,
c.lastname,
o.carrier_id,
ot.name as order_type,
z.Zone_name,
cr.car_zones,
cr.car_name,
cr.car_href,
o.invoice_amount,
o.rated_weight,
o.shipping_rate,
o.shipping_rate_my_fee,
o.customs_tax,
o.customs_tax_2,
o.customs_my_fee,
o.total_shipping_fee,
o.total_my_costs,
o.1kg_price,
o.my_profit,
o.goods_for_ship,
o.waybill,
o.prev_DHL_fee,
o.customer_paid,
os.name as order_status,
os.color
FROM orders o
inner join customer c on o.id_customer = c.id
inner join order_types on on o.order_type = ot.id
inner join (select car_zones
from carriers
where car_id=o.carrier_id) z on o.from_country = z.id
inner join carriers cr on IF(o.carrier_id = 0, 1, o.carrier_id) = cr.car_id
inner join order_status os on o.order_status = os.id
where import_or_export = 'import' AND o.active > 0
So ist die Zeichenfolge
inner join (select car_zones from carriers where car_id=o.carrier_id) z on o.from_country = z.id
nicht funktioniert, können Sie mir bitte helfen, diese Situation zu lösen?
Ich entfernte die inkompatiblen Tags. Bitte fügen Sie das Tag für die Datenbank, die Sie wirklich verwenden, hinzu. –
Fügen Sie ** id ** in die Unterabfrage als '(wählen Sie id, car_zones von Trägern, wo car_id = o.carrier_id) z auf o.from_country = z.id' – Viki888
Sie können keine Unterabfrage in der FROM-Klausel haben das bezieht sich auf eine andere Tabelle in der FROM-Klausel. Willst du das: 'inner join carrier z auf o.carrier_id = z.car_id und o.from_country = z.id'? Wenn nicht, was stattdessen? –