MySQL Fehlermeldung "on clause"

sugar

Erfahrenes Mitglied
Ich habe folgende Fehlermeldung:

Temporary query failure: Unknown column 'address_book.entry_country_id' in 'on clause'

bei meiner MySQL Abfrage:

PHP:
<?php
  $query = "SELECT DISTINCT COUNT(*) as count, address_book.entry_country_id, countries.countries_name FROM address_book, customers JOIN countries ON address_book.entry_country_id = countries.countries_id WHERE customers.customers_id = address_book.customers_id AND customers.customers_default_address_id = address_book.address_book_id GROUP BY entry_country_id ORDER BY countries.countries_name";
  $result = mysql_query($query) or die("Temporary query failure: " . mysql_error());
 
  echo "    <table>\n";
  echo "      <tr class=\"header\"><th>country</th><th>customers</th></tr>\n";
  while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    echo "      <tr>\n";
    echo "        <td><a href=\"cities.php?country_id=$row[1]\">$row[2]</a></td>\n";
    echo "        <td align=\"center\">$row[0]</td>\n";
    echo "      </tr>\n";
  }
  echo "    </table>\n";
 
  mysql_free_result($result);
?>

Ich habe gelesen es könnte an einer veralteten Schreibweise liegen, ich habe
MySQL - 5.0.26, was muss ich ändern?
 
Hallo,

wenn Du hier eine Zeile mit > 380 Zeichen postest ist das echt unfair gegenüber den Leuten die sich das hier anschauen wollen, wäre nett wenn Du das beim nächsten mal formatierst ;o) . Hilft allen.

In Deiner Query machst Du glaube ich den Fehler die alte Schreibweise mit der neuen zu kombinieren. Ich habs mal umgeschrieben weis nicht genau obs geht, aber in der FROM Clausel sollte nur eine Tabelle stehen die Du dann per JOIN Clausel an die anderen hängst.
PHP:
SELECT 
      DISTINCT COUNT(*) as count, address_book.entry_country_id,  countries.countries_name 
FROM 
      address_book
JOIN
      customers ON address_book.customers_id = address_book.customers_id
JOIN 
      countries ON address_book.entry_country_id = countries.countries_id 
WHERE 
      customers.customers_default_address_id = address_book.address_book_id 
GROUP BY 
      entry_country_id 
ORDER BY 
      countries.countries_name

ich hoffe das hilft, viele Grüße
 
Wirklich super! Hat geklappt!

Eine Frage hätte ich noch: wie kann ich nur ein Land aus dieser Abfrage heraus bekommen?

Zur Zeit sieht es so aus z.B.:

country customers
Germany 2
Spain 1

Danke noch mal!

(Das ganze soll nämlich eine Karte werden!)
 
ok ich habe es jetzt folgendermaßen nach Ländern geordnet:

PHP:
  $query = "SELECT 
      DISTINCT COUNT(*) as count, address_book.entry_country_id,  countries.countries_name
FROM 
    address_book
JOIN
      customers ON address_book.customers_id = address_book.customers_id
JOIN
      countries ON address_book.entry_country_id = countries.countries_id 
WHERE 
      customers.customers_default_address_id = address_book.address_book_id 
	  AND countries.countries_name='Spain' 
	  
GROUP BY 
      entry_country_id 
ORDER BY 
      countries.countries_name";

Jetzt würde ich gern noch folgende Abfrage unterbringen:

PHP:
(SELECT products_model
          FROM orders_products
         WHERE products_model = '0003')

Leider weiß ich nicht wo, ich dachte man könnte eine Abfrage irgendwie verschachteln?
 
Genau so ähnlich soll es aussehen wie in dem Beispiel:

PHP:
SELECT 
      DISTINCT COUNT(*) as count, address_book.entry_country_id,  countries.countries_name
	  
  FROM address_book,

       (SELECT products_model FROM orders_products WHERE products_model ='0003')

JOIN
      customers ON address_book.customers_id = address_book.customers_id
JOIN
      countries ON address_book.entry_country_id = countries.countries_id 
WHERE 
      customers.customers_default_address_id = address_book.address_book_id 
	  AND countries.countries_name='Spain' 
	  
GROUP BY 
      entry_country_id 
ORDER BY 
      countries.countries_name

Es geht um einen Shop (xtCommerce). Ich will ermitteln wieviele Produkte pro Land verkauft wurden. Ohne die zusätzliche Abfrage erhalte ich nur wieviele Produkte allgemein verkauft wurden in einem Land.

Danke noch mal!
 
Oder ging es vielleicht so?
PHP:
SELECT 
      DISTINCT COUNT(*) as count, a.address_book.entry_country_id,  a.countries.countries_name, b.products_model,
	  
  FROM address_book a, orders_products b

JOIN
      customers a ON a.address_book.customers_id = a.address_book.customers_id
JOIN
      countries a ON a.address_book.entry_country_id = a.countries.countries_id 
WHERE 
      a.customers.customers_default_address_id = a.address_book.address_book_id 
	  AND a.countries.countries_name='Spain'
	  AND b.products_model ='0003'
	  
GROUP BY 
      a.entry_country_id 
ORDER BY 
      a.countries.countries_name

Bekomme ich natürlich auch eine Fehlermeldung aber vielleicht so ähnlich?
 
Hi,

welche spalten stehen denn in der product tabelle ?

Du brauchst einen bezug zwischen Produkt tabelle und Land, also in produkt z.B, eine Landes Id u.s.w.

Grüße
 
Ich habe mir jetzt folgendes Script "gebastelt":

PHP:
<?php
  $query = @mysql_query ("SELECT 
DISTINCT COUNT(*) as count, orders.orders_id, orders.customers_country, countries.countries_name, orders_products.products_model
      
  FROM orders

JOIN
      orders_products ON orders.orders_id = orders_products.orders_id
JOIN
      countries ON orders.customers_country = countries.countries_name
WHERE 
      countries.countries_name='Germany' AND orders_products.products_model ='0002'
      
GROUP BY 
      countries.countries_name"); 
	  
$info = mysql_fetch_array($query, MYSQL_NUM);
$ergebnis  = $info[0];  
 
 
?> 
<?php
  $query = @mysql_query ("SELECT 
DISTINCT COUNT(*) as count, orders.orders_id, orders.customers_country, countries.countries_name, orders_products.products_model
      
  FROM orders

JOIN
      orders_products ON orders.orders_id = orders_products.orders_id
JOIN
      countries ON orders.customers_country = countries.countries_name
WHERE 
      countries.countries_name='Spain' AND orders_products.products_model ='0002'
      
GROUP BY 
      countries.countries_name"); 
	  
$info = mysql_fetch_array($query, MYSQL_NUM);
$ergebnis2  = $info[0];  
 
$kontinent1 = $ergebnis + $ergebnis2;


 
?>

Könnte man dieses vielleicht irgendwie zusammenfassen? Ich errechne so, wieviele Produkte in einem Kontinent verkauft wurden!
 
Zurück