Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MySQL kennt definierte Spalten nicht?! (https://www.delphipraxis.net/151841-mysql-kennt-definierte-spalten-nicht.html)

phXql 3. Jun 2010 12:58

Datenbank: MySQL • Version: 5.1.40 • Zugriff über: Query Analyzer

MySQL kennt definierte Spalten nicht?!
 
Hallo!

Ich hab folgendes SQL-Statement:
SQL-Code:
select display_name,
(SELECT COUNT(*) from customer_viewed_coupons_view cvcv WHERE cvcv.city_id = c.id) as view_count,
(SELECT COUNT(*) from ordered_coupons_view ocv WHERE ocv.city_id = c.id) as buy_count,
(buycount / viewcount) as conversion
from cities c
Wenn ich das ausführe, kommt:
Zitat:

Unknown column 'buycount' in 'field list'
Wenn ich buy_count und view_count durch diese großen Subselects ersetze, funktioniert alles, dafür hab ich dann kein schönes SQL-Statement mehr. Wieso kennt SQL buy_count nicht, ich hab die Spalte doch oben definiert?

Danke, phXql

Aurelius 3. Jun 2010 13:06

Re: MySQL kennt definierte Spalten nicht?!
 
Spontan würde ich auf

SQL-Code:
(buy_count / view_count)
tippen :)

phXql 3. Jun 2010 13:07

Re: MySQL kennt definierte Spalten nicht?!
 
Uargh, okay, ich hab da schon zuviel rumprobiert.

Geht aber auch mit
SQL-Code:
select display_name,
(SELECT COUNT(*) from customer_viewed_coupons_view cvcv WHERE cvcv.city_id = c.id) as view_count,
(SELECT COUNT(*) from ordered_coupons_view ocv WHERE ocv.city_id = c.id) as buy_count,
(buy_count / view_count) as conversion
from cities c
nich.
Zitat:

Unknown column 'buy_count' in 'field list'

franktron 3. Jun 2010 15:05

Re: MySQL kennt definierte Spalten nicht?!
 
Wie soll man dir den helfen wenn wir gar nicht wissen wie die Tabellen aufgebaut sind.

phXql 3. Jun 2010 15:30

Re: MySQL kennt definierte Spalten nicht?!
 
Der Fehler hat ja nix mit der Struktur zu tun, sondern dass MySQL meine eigenen (mit AS deklarierten) Spalten in der Berechnung von Conversion nicht kennt, wenn ich die Berechnung von Conversion rauswerf (4. Zeile), dann geht alles mit gewünschtem Ergebnis.

DeddyH 3. Jun 2010 15:35

Re: MySQL kennt definierte Spalten nicht?!
 
Das ist aber nicht nur bei MySQL so.

phXql 3. Jun 2010 15:35

Re: MySQL kennt definierte Spalten nicht?!
 
D.h. das Problem is bekannt und es gibt keine gescheite Lösung dafür, außer die Berechnung zu kopieren?!

franktron 3. Jun 2010 15:35

Re: MySQL kennt definierte Spalten nicht?!
 
Du weist das as nur im SELECT geht oder

phXql 3. Jun 2010 15:36

Re: MySQL kennt definierte Spalten nicht?!
 
Das AS is doch im Select.

DeddyH 3. Jun 2010 15:42

Re: MySQL kennt definierte Spalten nicht?!
 
Ein Versuch aus der Hüfte:
SQL-Code:
SELECT
  c.displayname,
  x.view_count,
  y.buy_count,
  (x.view_count / y.buy_count) AS conversion
FROM
  cities c,
  (SELECT COUNT(*) AS view_count FROM customer_viewed_coupons_view cvcv WHERE cvcv.city_id = c.id) x,
  (SELECT COUNT(*) AS buy_count FROM ordered_coupons_view ocv WHERE ocv.city_id = c.id) y

phXql 3. Jun 2010 15:50

Re: MySQL kennt definierte Spalten nicht?!
 
Leider nicht, dann kommt der Fehler
Zitat:

Unknown column 'c.id' in 'where clause'
, weil er das c.id nicht mehr kennt :(

DeddyH 3. Jun 2010 15:56

Re: MySQL kennt definierte Spalten nicht?!
 
Dann gehen mir im Moment leider auch die Ideen aus :(

phXql 3. Jun 2010 15:57

Re: MySQL kennt definierte Spalten nicht?!
 
Schade, aber danke für deine Bemühungen! :)

Vielleicht meldet sich ja noch wer, der schonmal sowas ähnliches hatte.. Ich kann nicht akzeptieren, dass SQL sowas nicht kann ;)

DeddyH 3. Jun 2010 15:59

Re: MySQL kennt definierte Spalten nicht?!
 
Ich hab jetzt Feierabend, aber zu Hause versuch ich es nochmal, irgendwie geht das mit Sicherheit ;)

mkinzler 3. Jun 2010 16:07

Re: MySQL kennt definierte Spalten nicht?!
 
SQL-Code:
select
  *,
  (buycount / viewcount) as conversion
from (
  select
    display_name,
    (SELECT COUNT(*) from customer_viewed_coupons_view cvcv WHERE cvcv.city_id = c.id) as view_count,
    (SELECT COUNT(*) from ordered_coupons_view ocv WHERE ocv.city_id = c.id) as buy_count,
  from cities c);

phXql 3. Jun 2010 16:15

Re: MySQL kennt definierte Spalten nicht?!
 
Sehr gute Idee, Markus!

Deine Lösung ging noch nicht ganz, aber ich habs hinbekommen!

Diese Lösung geht nun :)

SQL-Code:
select
  *,
  (buy_count / view_count) as conversion
from
(
  (select c.display_name,
    (SELECT COUNT(*) from customer_viewed_coupons_view cvcv WHERE cvcv.city_id = c.id) as view_count,
    (SELECT COUNT(*) from ordered_coupons_view ocv WHERE ocv.city_id = c.id) as buy_count
  from cities c) as dummy
);
Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz