Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Moin

Ich schreib gerade einen Job, der bei Ausführung anhand einer Tabelle meiner Datenbank einen Kategoriebaum Generieren soll.

Meine Tabelle enthält folgende Werte: KategorieID (ID der ArtikelKategorie), ParentId (ID des Elternteils), name, Magento_ID (Sobald ich dem Kategoriebaum in Magento etwas hinzufüge, weißt Magento diesem eine eigene Magento ID zu, deswegen muss ich die generierte Magento_ID auslesen um sie mit der richtigen AritkelKategorie zu verknüpfen. 

Leider will das noch nicht ganz klappen.

Ich hab mir dieses SQL query ausgedacht:

SELECT    k1.*, k3.Magento_ID as magento_id_parent FROM dbo.MagentoKategoriebaum k1, dbo.MagentoKategoriebaum k3 
        WHERE k1.parentId = k3.KategorieID 
        AND k1.Magento_ID is NULL 
        AND (k1.parentId = 0 
        OR (SELECT Magento_ID FROM dbo.MagentoKategoriebaum k2 
        WHERE k1.parentId = k2.KategorieID) IS NOT NULL)

Das prob dabei ist, das es mir die Eltern zu beginn mit Kategorie_ID 0 nicht anzeigt. SObald diese eine Magento_ID zugewiesen bekommen haben funktioniert alles.

Jemand eine Idee?

  • 3 Wochen später...
Am 22.10.2018 um 08:52 schrieb PVoss:

PS. Wenn mein Kollege seine Aliase als K1 und K3 benennt, druck ich die Query aus und hau sie ihm um die Ohren :)

Das kann ich nachvollziehen aber hier handelt es sich ja erstmal um einen test denke ich. Da ist alles erlaubt :D

Es könnte schlicht an deinem k1.parentId = 0 liegen. Denn wenn k1.parentId = 0 ist kann er keinen passenden Eintrag in k3 finden (ich gehe mal von einem Fremdschlüsselverhältnis aus)

Ohne testdaten zu haben oder dein genaues Anliegen zu verstehen, könnten die falschen Daten bzw. die 0 ggf. auch etwas mit deinem inner Join zu tun haben? Wenn ich das richtig sehe, willst du die Datensätze inkl. des jeweiligen Parent laden. Da wäre ein LEFT JOIN zwischen k1 und k3 passend. 

SELECT 
	k1.*, 
	k3.Magento_ID as magento_id_parent 
FROM dbo.MagentoKategoriebaum k1
	LEFT JOIN dbo.MagentoKategoriebaum k3
        ON k1.parentId = k3.KategorieID 
WHERE
	k1.Magento_ID is NULL 
    AND 
	(
		k1.parentId = 0 
        OR (
            SELECT 
                Magento_ID 
            FROM dbo.MagentoKategoriebaum k2 
            WHERE k1.parentId = k2.KategorieID
        ) IS NOT NULL
	)

 

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.