Antwort #8 am: 27. Januar 2016, 17:05:23
Ja danke! Ich habe jetzt die Klasse products angepasst, und ich habe einen einzigen der Querys sauber zum laufen bekommen, den "Also purchased"
Bei den anderen kommen derzeit noch witzige Ergebnisse zustande. Mit JOIN stehe ich auf dem Kriegsfuß
Das funktioniert:
$this->default_select ="p.products_fsk18,
p.products_id,
p.products_price,
p.products_tax_class_id,
p.products_image,
p.products_quantity,
p.products_vpe,
p.pages,
p.cover,
p.products_subtitle,
p.products_publishing_info,
p.products_ebook_isbn,
p.products_ebook_url,
p.products_vpe_status,
p.products_vpe_value,
p.products_date_available,
p.products_model,
pd.products_name,
pd.products_short_description,
GROUP_CONCAT(a.autors_title, ' ', a.autors_firstname, ' ', a.autors_noble_title,' ', a.autors_lastname, ' ' SEPARATOR '|' ) AS autor ";
....
$orders_query = "SELECT ".$this->default_select."
FROM ".TABLE_ORDERS_PRODUCTS." op1
JOIN ".TABLE_ORDERS_PRODUCTS." op2 on op2.orders_id = op1.orders_id
JOIN ".TABLE_ORDERS." o on o.orders_id = op2.orders_id
JOIN ".TABLE_PRODUCTS." p on p.products_id = op2.products_id
JOIN ".TABLE_PRODUCTS_DESCRIPTION." pd on pd.products_id = op2.products_id
LEFT JOIN autors_to_products ap ON p.products_id=ap.products_id LEFT JOIN autors a ON ap.autors_id=a.autors_id
WHERE op1.products_id = ".$this->pID."
AND op2.products_id != ".$this->pID."
AND p.products_status = 1
AND trim(pd.products_name) != ''
AND pd.language_id = ".(int) $_SESSION['languages_id']
.$group_check
.$fsk_lock."
GROUP BY p.products_id
ORDER BY o.date_purchased desc
LIMIT ".MAX_DISPLAY_ALSO_PURCHASED;
Die anderen wie z.B.
$cross_query = "SELECT ".$this->default_select.",
xp.sort_order
FROM (".TABLE_PRODUCTS_XSELL." xp,
".TABLE_PRODUCTS." p,
".TABLE_PRODUCTS_DESCRIPTION." pd)
LEFT JOIN autors_to_products ap ON p.products_id=ap.products_id LEFT JOIN autors a ON ap.autors_id=a.autors_id
WHERE xp.products_id = ".$this->pID."
AND xp.xsell_id = p.products_id "
.$fsk_lock
.$group_check."
AND p.products_id = pd.products_id
AND xp.products_xsell_grp_name_id='".$cross_sells['products_xsell_grp_name_id']."'
AND pd.language_id = ".(int)$_SESSION['languages_id']."
AND trim(pd.products_name) != ''
AND p.products_status = 1
ORDER BY xp.sort_order asc";
funktionieren nicht ....
[ Für Gäste sind keine Dateianhänge sichtbar ]
Der Standardquery für die Produktlisten liefert wenigstens die restlichen Daten auch wenn Autor komplett fehlt.
Ich denke ich muss die Komma Joins
(".TABLE_PRODUCTS_XSELL." xp,
".TABLE_PRODUCTS." p,
".TABLE_PRODUCTS_DESCRIPTION." pd)
Umbauen zu so was:
(".TABLE_PRODUCTS_XSELL." xp
JOIN ".TABLE_PRODUCTS." p ON
.... JOIN ".TABLE_PRODUCTS_DESCRIPTION." pd ON
...