Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Problem beim Einbau eines left Join in eine MySQL Abfrage

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 23.01.2009, 20:24

Hi,

es geht darum für ein Shopsystem eine Abfrage zu bauen. Ich möchte quasi von einer Kategorie Rekursiv die 10 Produkte zurückgeben lassen die noch aktiv sind, am meisten verkauft sind (1. sorting desc) und die meisten views haben (2. sorting desc).

Bis auf das viewed habe ich den SQL soweit fertig. Er schaut so aus;

Code: Alles auswählen

$sql3 = "select p.* from osc_products p, osc_products_to_categories p2c, osc_categories c where p.products_id = p2c.products_id and p.products_status = 1 and p2c.categories_id = c.categories_id and c.categories_nested_left > " . $row&#91;'categories_nested_left'&#93; . " and c.categories_nested_right < " . $row&#91;'categories_nested_right'&#93; . " and p.products_status = 1 group by p.products_id order by p.products_ordered desc limit 10";
Der Code ist soweit auch korrekt.

Nun habe ich noch eine Tablle osc_viewed_products mit den Spalten id (entspricht der products_id) und viewed (anzahl der besuche). Diese Tabelle hat allerdings nicht für jedes Produkt einen Eintrag, daher kann ich diese Sache nur über ein left join integrieren.

Ich muss quaso p.products_id als left join mit osc_viewed_products.viewed verbinden und dann hinten noch das sort rein (das sorting ist nicht das problem).

Mein Problem ist, dass ich nicht weiß wie ich das left join in meine Abfrage einbauen kann. Bzw. ob es überhaupt geht? Oder muss ich vielelicht sogar alle anderen Verknüpfungen auf inner join umbauen? Notfalls würde ich sonst die viewed mit in die products Tabelle einbauen.

Vielleicht hat da jemand etwas mehr Ahnung und kann helfen:)

Phil

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


bloddy newbie
PostRank 4
PostRank 4
Beiträge: 171
Registriert: 18.05.2006, 20:15

Beitrag von bloddy newbie » 23.01.2009, 21:27

{AUTO_INCREMENT_ID} ist noch durch den Primary Key der Tabelle osc_viewed_products zu ersetzen (ich gehe davon aus, dass es einen gibt).

Code: Alles auswählen

SELECT      p.*,
            COUNT&#40;DISTINCT&#40;vp.&#123;AUTO_INCREMENT_ID&#125;&#41;&#41; AS viewCnt
FROM        osc_products p
LEFT JOIN   osc_viewed_products AS vp
            ON vp.id = p.products_id, 
            osc_products_to_categories p2c, 
            osc_categories c 
WHERE       p.products_id = p2c.products_id 
            AND p.products_status = 1 
            AND p2c.categories_id = c.categories_id 
            AND c.categories_nested_left > " . $row&#91;'categories_nested_left'&#93; . " 
            AND c.categories_nested_right < " . $row&#91;'categories_nested_right'&#93; . " 
            AND p.products_status = 1 
GROUP BY    p.products_id 
ORDER BY    p.products_ordered DESC,
            viewCnt DESC
LIMIT       10
Sollte klappen

pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 23.01.2009, 21:46

Jo, Danke für dein Beispiel. Ist ja cool, dass man den Join da einfach beim Auflisten der Tabellen mit angeben kann.

Meine Viewed Tabelle hat keinen autoincrement (Ich glaub du bist da von einer anderen Struktur ausgegangen), da jede products_id da eh schon unique ist. Habe die Anfrage also leicht umgebaut, in dem ich oben das Count(....) gekickt habe und unten direkt nach vp.desc sortiere. Damit haut es wunderbar hin ;)

bloddy newbie
PostRank 4
PostRank 4
Beiträge: 171
Registriert: 18.05.2006, 20:15

Beitrag von bloddy newbie » 23.01.2009, 22:56

ah ok :-) Ich hatte gedacht, dass dort die Klicks gesammelt werden (je Klick ein Datensatz).

Einen schönen Abend dir noch ;)

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag