Ja, das klappt soweit. Wenn ich deine Änderung aber in die Ursprünglichen Befehle einfüge bekomme ich aber folgende Meldung:
#1066 - Not unique table/alias: 'z2geozones'
Ja. In der ursprünglichen Abfrage (das Minimalbeispiel von Dir) sind noch 3 Tabellen in Verwendung:
tax_rates
zones_to_geo_zones
products
Anscheinend stört sich Dein mysql (weiss nicht, ob's an den Daten, der Version oder der Konfiguration liegt) daran,
dass hinter dem Products ein Verweis aus tax_rates hergestellt wird. Aber über eine Tabelle (zones_to_geo_zones) hinweg.
Ich hab die Abfrage deshalb anders aufgebaut.
Jetzt muss ich das mit den restlichen auch noch machen. Mir fehlt dabei aber etwas die Routine, um das mal schnell zu machen. Ich werds mir in den nächsten Tagen mal genau anschauen.
Gerd
Super danke!
Hey,
vielleicht hilft das weiter: http://bugs.mysql.com/bug.php?id=10266
Da steht irgendwie dass die Reihenfolge der abgefragten Tabellen was damit zu tun hat. Lustigerweise bei der selben MySql-Version wie bei mir, aber angeblich kein Bug...
Ich würd's mir ja selber umstellen, aber ich habe keine Ahnung welche Tabelle hier zuerst abgefragt werden sollte und welche danach usw... Von SQL hab ich leider nicht die geringste Ahnung.
Hi,
ich hab jetzt die Anfrage mal komplett umgestellt auf "Left Joins".
Geht das damit ?
SELECT prod.products_model, prod_desc.products_name, prod_desc.products_description, prod_desc.products_short_description,prod.products_image, products_quantity, prod.products_id, prod.products_ean, cat_desc.categories_name, prod.products_price, tax.tax_rate, tax.tax_description FROM products_description prod_desc LEFT JOIN products prod ON (prod.products_id = prod_desc.products_id) LEFT JOIN products_to_categories prod_cat ON (prod_cat.products_id = prod.products_id) LEFT JOIN categories_description cat_desc ON (prod_cat.categories_id = cat_desc.categories_id) LEFT JOIN tax_rates tax ON (prod.products_tax_class_id = tax.tax_class_id) LEFT JOIN zones_to_geo_zones z2geozones ON (z2geozones.geo_zone_id = tax.tax_zone_id) LEFT JOIN countries ON (countries.countries_id = z2geozones.zone_country_id) LEFT JOIN languages langu ON (langu.languages_id = cat_desc.language_id) WHERE (langu.code = 'de') AND (countries.countries_id = '81') AND (langu.languages_id = prod_desc.language_id) LIMIT 100
Wenn das Ergebnis so aussehen soll:
MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen). (die Abfrage dauerte 0.0432 sek.)
Wenigstens schon mal keine Fehlermeldung
und wenn du die letzte 3 Zeilen änderst in:
WHERE 1 LIMIT 100
Sieht dann so aus:

Moin,
wollt mal kurz nachfragen ob's was dazu gibt? Hab grad nen Tag frei und dachte ich schau mal vorbei...
Gruß
Sascha
Hallo.
Nein. ich hab's noch nicht umgestellt. Ich wollte das für die Kunden auch noch tun.
Gerd
Also in Fakturama bekomme ich jetzt auch keine Fehlermeldung mehr, aber Daten wurden leider auch nicht runtergeladen. Und nun?
hmm. So auf die Ferne ist das natürlich immer etwas schwierig.
Man könnte sich Stück für Stück an die Ursache rantasten.
Ich habe aber noch eine andere Vermutung:
Du hast ja:
WHERE
(langu.code = 'de') AND (countries.countries_id = '81') AND (langu.languages_id = prod_desc.language_id)
LIMIT 100
mal geändert in:
WHERE
1
LIMIT 100
und erst danach hattest Du ein Ergebnis. Möglicherweise hat es damit was zu tun. mit "1" werden alle Datensätze angezeigt, mit der komplexeren aber nur diejenigen, deren Sprache mit der des Shops übereinstimmt. Grund ist: Angenommen, Du hast eine englische und deutsche Beschreibung der Produkte, dann sollen nur die deutschen importiert werden.
Wenn Du folgenden SQL Befehl ausführst, sollten einige Produkte angezeigt werden.
Zusätzlich jetzt noch mit den Spalten für Sprache und Land.
SELECT prod.products_model, prod_desc.products_name, prod_desc.products_description, prod_desc.products_short_description,prod.products_image, products_quantity, prod.products_id, prod.products_ean, cat_desc.categories_name, prod.products_price, tax.tax_rate, tax.tax_description, langu.code, countries.countries_id, langu.languages_id, prod_desc.language_id prodlang_id, cat_desc.language_id catlang_id FROM products_description prod_desc LEFT JOIN products prod ON (prod.products_id = prod_desc.products_id) LEFT JOIN products_to_categories prod_cat ON (prod_cat.products_id = prod.products_id) LEFT JOIN categories_description cat_desc ON (prod_cat.categories_id = cat_desc.categories_id) LEFT JOIN tax_rates tax ON (prod.products_tax_class_id = tax.tax_class_id) LEFT JOIN zones_to_geo_zones z2geozones ON (z2geozones.geo_zone_id = tax.tax_zone_id) LEFT JOIN countries ON (countries.countries_id = z2geozones.zone_country_id) LEFT JOIN languages langu ON (langu.languages_id = cat_desc.language_id) WHERE 1 LIMIT 100
1.)
In der Spalte "code" steht bei den Produkten aus meinem Shop ein "de", weil ich die Produktbeschreibungen nur auf deutsch habe. In meinem XTCModified Shop habe ich unter "Land/Steuer" und "Sprachen" deutsch und englisch, aber deutsch ist mit der Kodierung "de" als Standard ausgewählt. Ist das bei Dir ähnlich ?
2.)
Dann habe ich in der Spalte "countries_id" einige Einträge mit "81". 81 steht für "Germany". Das hab ich im XTCModified Shop unter "Konfiguration" und "Mein Shop" als Land stehen.
3.)
Und in den letzten 3 Spalten "language_id", "prodlang_id" und "catlang_id" sollten die gleichen Werte (bei mir eine 2 für "Deutsch" ) stehen.
Gerd
1.)
In der Spalte "code" steht bei den Produkten aus meinem Shop ein "de", weil ich die Produktbeschreibungen nur auf deutsch habe. In meinem XTCModified Shop habe ich unter "Land/Steuer" und "Sprachen" deutsch und englisch, aber deutsch ist mit der Kodierung "de" als Standard ausgewählt. Ist das bei Dir ähnlich ?
Bei code steht bei mir mal ein de mal ein en, habe aber auch nur deutsche Produktbeschreibungen. Im Shop selbst habe ich Englisch auf inaktiv gesetzt.
2.)
Dann habe ich in der Spalte "countries_id" einige Einträge mit "81". 81 steht für "Germany". Das hab ich im XTCModified Shop unter "Konfiguration" und "Mein Shop" als Land stehen.
Hier steht bei mir immer "NULL" als Wert drin. Im Shop selbst ist aber definitiv Germany ausgewählt. Ist ja schonmal komisch...
3.)
Und in den letzten 3 Spalten "language_id", "prodlang_id" und "catlang_id" sollten die gleichen Werte (bei mir eine 2 für "Deutsch" ) stehen.
Unterschiedlich, von NULL über 1 bis 2 ist alles in bunter Mischung dabei.
Es sieht so aus, als ob etwas mit den Steuerzonen/Klassen im Shop noch nicht 100%ig ist.
Dann kann kein Produkt gefunden werden, mit einem passenden Steuersatz für Deutschland.
Deshalb wird das Produkt (bzw. überhaupt ein Produkt) nicht exportiert.
So sollte es aber auch nicht sein.
Ich habe die Abfrage nochmals umgestellt. Jetzt wird das Produkt auch dann exportiert, wenn kein passender Steuersatz gefunden wurde. Steuersatz ist dann halt "NULL".
Könntest Du nachfolgende Abfrage mal prüfen ?
Es sollten dann die Produkte angezeigt werden. Ggf. auch ohne Steuersatz.
SELECT prod_desc.products_name, prod_desc.products_description, prod_desc.products_short_description, prod.products_model, prod.products_image, products_quantity, prod.products_id, prod.products_ean, prod.products_price, cat_desc.categories_name, langu.code, langu.languages_id, countries.countries_id, tax.tax_rate, tax.tax_description FROM products_description prod_desc LEFT JOIN products prod ON (prod.products_id = prod_desc.products_id) LEFT JOIN languages langu ON (langu.languages_id = prod_desc.language_id) LEFT JOIN products_to_categories prod_cat ON (prod_cat.products_id = prod.products_id) LEFT JOIN categories_description cat_desc ON (prod_cat.categories_id = cat_desc.categories_id) AND (langu.languages_id = cat_desc.language_id) LEFT JOIN countries ON (countries.countries_id = '81') LEFT JOIN zones_to_geo_zones z2geozones ON (countries.countries_id = z2geozones.zone_country_id) LEFT JOIN tax_rates tax ON (prod.products_tax_class_id = tax.tax_class_id) AND (z2geozones.geo_zone_id = tax.tax_zone_id) WHERE (langu.code = 'de')
Gerd