Hallo zusammen,
ich habe eine Tabelle
catalog_product_entity
entity_id (primary) sku
123 1
124 2
125 3
126 4
und eine Tabelle
catalog_product_link
link_id (primary) product_id linked_product_id
1 123 126
2 124 123
3 125 124
Ich möchte eine Ausgabe die mir die jeweiligen Skus der Entitäten die verknüpft sind anzeigt.
Im Beispiel wäre das
product_sku linked_product_sku
1 4
2 1
3 2
Ich weiß nicht wie ich das mit joins zusammen bringen kann. Es handelt sich dabei um Magento-Tabellen.
Hi Friedly,
es sollte ungefähr so gehen (tippfehler möglich):
SELECT
ent.id,
ent.sku AS product_sku,
link.linked_product_id
FROM
catalog_product_entity AS ent
LEFT JOIN (catalog_product_link AS link)
ON (ent.id= link.product_id)
WHERE ent.sku=123
und jetzt noch etwas erklärung zu logik:
im FROM statment sagen wir aus welcher primär tabelle wir daten haben wollen (hier geht unsere suche los)
interessant ist der LEFT JOIN
hier sagen wir das wir welche tabelle der Primären tabelle hinzugefügt werden soll.
im ON() part sargen wir welche beien werte identisch sein sollen.
ich habe diverse AS keywords verwendet um den tabellen "kürzere griffigere namen zu geben. und um in der ausgabe ein feld als sku zu product_sku umzubennenn.
ich hoffe ich hab nicht zu viele tippfehler über die Mysql stolpert.
gruss chris
Hi Friendly,
SELECT was du willst from catalog_product_entity inner join catalog_product_link on catalog_product_entity.entity_id = catalog_product_link.product_id where was du willst
Hey Friendly,
du kannst eine mysql Tabelle mit sich selber joinen, in dem Du den Tabellen Aliase vergibst (Schlüsselwort: AS).
In Deinem Beispiel:
SELECT product.sku, linked_product.sku
FROM catalog_product_entity AS product
LEFT JOIN catalog_product_link AS cpl
ON product.entity_id = cpl.product_id
LEFT JOIN catalog_product_entity AS linked_product
ON cpl.linked_product_id = linked_product.entity_id
WHERE …
wichtig ist nicht mehr die realen Tabelennamen zu nehmen, sondern den Namen, der mit dem AS statement definiert wurde.
Hoffe ich habe Dir weitergehlofen, habe von Magento keine Ahnung, dafür aber von mysql
Hallo Friendly,
vor ab, warum versteckt ihr euch immer hinter falschen Namen? Das hier ist ein Forum, in dem man sich ruhig anreden kann
Sei’s drum, kommen wir zu Deinem Problem.
Um die gewünschte Lösung zu bekommen, würde ich
SELECT
catalog\_product\_entity.sku,
catalog\_product\_entity\_1.sku
FROM
(catalog\_product\_entity
INNER JOIN
catalog\_product\_link
ON
catalog\_product\_entity.entity\_id = catalog\_product\_link.product\_id)
INNER JOIN
catalog\_product\_entity
AS
catalog\_product\_entity\_1
ON
catalog\_product\_link.linked\_product\_id = catalog\_product\_entity\_1.entity\_id;
versuchen, das sollte Dein Wunschergebnis bringen.
Solange Du beide Skus in der selben Tabelle verwaltest, musst Du mit einem zweiten Join etwas tricksen.
So long,
Burkhard
die MySQL-Abfrage :
SELECT a.sku as product_sku ,
b.sku as linked_product_sku
FROM catalog_product_entity a ,
catalog_product_entity b ,
catalog_product_link l
WHERE a.entity_id = l.product_id
AND b.entity_id = l.linked_product_id
sollte funktionieren ;
wenn nicht bitte melden
Hi Friendly,
dies sollte deine Lösung sein. Wenn nicht Mail mir doch einfach
Tutorials rund ums Programmieren findest du auf http://tutorials.moedesign.de
SELECT cpe.sku, cpl.link_id
FROM catalog_product_entity AS cpe
INNER JOIN catalog_product_link AS cpl
ON cpe.entity_id = cpl.linked_product_id
Hallo Friendly,
mit Mangento habe ich noch nie gearbeitet und auch die Spaltennamen verwirren mich etwas. Aber du solltest dir anhand das simplen Beispiels Herleitenkönnen, was du machen musst.
SELECT tabelle1
.spalte2
, tabelle2
.spalte3
FROM tabelle1
left join tabelle2
on
tabelle1
.verlinkte_spalte
= tabelle2
.verlinkte_spalte
[WHERE …]
MySQL Referenzbuch Join: http://dev.mysql.com/doc/refman/5.1/de/join.html
MFG
Hi, sorry dass ich erst jetzt antworte, aber ich habe deine Anfrage erst jetzt gesehen.
Du brauchst eine Tabelle wo die Daten über die ID verbunden sind. Z.B. eine Tabelle nur mit
einer Spalte entity_id und einer Spalte mit link_id
(über beide Spalten den Primärschlüssel einstellen)
dann kannst du damit abfragen.