Да полудея!!!!
На Access работи, а на MySQL не искам. И аз използвам трика с публикация тук.
Ето запитването:
SELECT A.B_ID,
B.CNT_B,
B.MAX_PRICE,
B.SUM_AB,
B.SUM_C_AB,
B.UNIQUE_B,
B.Costi,
B.COUNTDOWN,
A.AUCT_ID
FROM MONITOR AS A
INNER JOIN
(SELECT B_ID,
COUNT(B_ID) AS CNT_B,
MAX(PREZZO_ATTUALE) AS MAX_PRICE,
SUM(TOT_PUNT_AB) AS SUM_AB,
SUM(TOT_CAMBI_AB) AS SUM_C_AB,
(CNT_B-SUM_AB) AS UNIQUE_B,
(0.035*3*CNT_B+MAX_PRICE) AS COSTI,
45-SUM(CONT_PROVV_AB) AS COUNTDOWN
FROM MONITOR
WHERE AUCT_ID = '123456789'
GROUP BY B_ID) AS B
ON A.B_ID= B.B_ID
WHERE A.AUCT_ID = '123456789'
ORDER BY B.MAX_PRICE DESC,
B.CNT_B DESC
показва
ГРЕШКА: [MySQL][ODBC 3.51 драйвер][mysqld-5.5.33-31.1-log]Неизвестна колона 'CNT_B' в 'списък с полета'
Ако напусна CNT_B, ми казва MAX_PRICE и така нататък.
Сигурен съм. Това е INNER JOIN проклятие!
Ето цигулката с грешката
РЕШЕНИЕ
Не мога да използвам стойността на ALIAS в същата подзаявка.
Така че новата ВАЛИДНА заявка е:
SELECT A.B_ID,
B.CNT_B,
B.MAX_PRICE,
B.SUM_AB,
B.SUM_C_AB,
B.UNIQUE_B,
B.Costi,
B.COUNTDOWN,
A.AUCT_ID
FROM MONITOR AS A
INNER JOIN
(SELECT B_ID,
COUNT(B_ID) AS CNT_B,
MAX(PREZZO_ATTUALE) AS MAX_PRICE,
SUM(TOT_PUNT_AB) AS SUM_AB,
SUM(TOT_CAMBI_AB) AS SUM_C_AB,
(COUNT(B_ID)-SUM(TOT_PUNT_AB)) AS UNIQUE_B,
(0.035*3*COUNT(B_ID)+MAX(PREZZO_ATTUALE)) AS COSTI,
45-SUM(CONT_PROVV_AB) AS COUNTDOWN
FROM MONITOR
WHERE AUCT_ID = '123456789'
GROUP BY B_ID) AS B
ON A.B_ID= B.B_ID
WHERE A.AUCT_ID = '123456789'
ORDER BY B.MAX_PRICE DESC,
B.CNT_B DESC
Благодаря
Оскар
C.MAX_PRICE
? - person hjpotter92   schedule 02.11.2013SHOW CREATE TABLE MONITOR
биха били добри, но забелязвам, че вашата заявка препраща къмC.MAX_PRICE
, когато не е посочена таблицаC
, така че това трябва да бъде поправено. Да, снайпер. - person zanlok   schedule 02.11.2013