2013-11-19 2 views
1

Я запускал этот запрос последние 6 месяцев без проблем на нескольких серверах, но сегодня получил ошибку?Столбец неоднозначный в mysql?

error_message: Database query failed: Column 'account_id' in field list is ambiguous 

Столбец account_id неоднозначен?

$sql_query = "SELECT pricenotifier_criteria.criteria_id , pricenotifier_criteria.`event_id` , pricenotifier_criteria.`ticket_id` , pricenotifier_criteria.`criteria` ,pricenotifier_criteria.account_id ,seller_ids.user_id,seller_ids.seller_id 
FROM pricenotifier_criteria 
INNER JOIN seller_ids 
ON (pricenotifier_criteria.account_id = seller_ids.account_id) 
INNER JOIN pricenotifier_users 
ON (pricenotifier_criteria.user_id = pricenotifier_users.user_id) 
INNER JOIN pricenotifier_pricing_table 
ON (pricenotifier_users.pricing_id = pricenotifier_pricing_table.pricing_id) 
WHERE status=1 AND pricenotifier_pricing_table.processing_time = 15 
AND pricenotifier_criteria.user_id = 339 
ORDER BY pricenotifier_criteria.event_id 
LIMIT 2000 
OFFSET 0"; 

Я попытался запустить этот запрос в sql в phpmyadmin, но ошибка не появилась? если я запускаю это через PHP, чем я получил эту ошибку

ИЗВИНЕНИЕ БУДЕТ СДЕЛАНО

Я очень сожалею, на странице, где я был запущен этот запрос я обозвал другую страницу, где другой программист техника его подводит выше таблицу prefrix вот почему мы получили эту ошибку, но все ребята, которые ответили правильно, получили почти правдивый ответ (почему возникает ошибка ambigius). Я разместил его здесь, потому что был уверен, что мой запрос не имеет ничего однозначного, и я был прав, но в другом файле был запущен некоторый запрос и эта ошибка.

+0

Вы уверены, что все, что у вас есть в php, идентично этому запросу? – Mihai

+0

Я только что скопировал и вставил этот запрос из php-скрипта – user3010908

+1

Я не думаю, что * это * сообщение об ошибке относится к запросу * that *, хотя это может быть более аккуратным ... о, единственная * потенциальная * неоднозначность - это статус ' – Strawberry

ответ

0

уборщик версия одного и того же ...

SELECT c.criteria_id 
     , c.event_id 
     , c.ticket_id 
     , c.criteria 
     , c.account_id 
     , s.user_id 
     , s.seller_id 
    FROM pricenotifier_criteria c 
    JOIN seller_ids s 
    ON s.account_id = c.account_id 
    JOIN pricenotifier_users u 
    ON u.user_id = c.user_id 
    JOIN pricenotifier_pricing_table g 
    ON g.pricing_id = u.pricing_id 
    WHERE status = 1 
    AND g.processing_time = 15 
    AND c.user_id = 339 
    ORDER 
    BY c.event_id 
    LIMIT 2000; 
+0

Вы только что переформатировали или изменили ее как-нибудь? – zerkms

+0

он должен теперь работать – user3010908

+0

тестирования Это выглядит ясно – user3010908

0

Держу пари, что ваш код PHP просто выбирает account_id без таблицы префикса pricenotifier_criteria или seller_ids. Поскольку обе таблицы содержат поле account_id, это было бы двусмысленно без префиксов таблиц.

+0

но вы видите, я ставлю таблицу prefrex – user3010908

+0

Вы правы, но смотрите мой вопрос снова – user3010908

0

Эта ошибка:

error_message: Запрос к базе данных не удалось: Column 'account_id' в списке полей неоднозначна

account_id означает, что это поле 2 или более таблиц. В качестве примера:

SELECT account_id, other_things 
FROM table_account 
INNER JOIN table_account2 ON (table_account.account_id = table_account2.account_id) 

account_id является поле из 2-х таблиц: table_account и table_account2. Тогда это неоднозначно, потому что из какой таблицы будет выбран account_id?

Как указано в @strawberry, единственным полем, которое может быть неоднозначным, является status в запросе, который вы нам показали. Если у вас действительно есть эта проблема, убедитесь, что вы префикс всех полей в своем запросе: table.field_name. Тогда это позволит избежать такой ошибки.

+0

pricenotifier_criteria.account_id я выбор этого из pricenotifier вы можете снова увидеть запрос? – user3010908

+0

@ user3010908 В вашем случае 'account_id' является' pricenotifier_criteria' и 'seller_ids'. Но вы поставили имя таблицы впереди, так что все в порядке. Просто убедитесь, что ваш запрос в вашем PHP-коде идентичен. Кроме того, убедитесь, что вы поместили имя таблицы перед ВСЕМИ вашими полями. –

+0

Привет, Габриэль, ты можешь снова увидеть мой вопрос – user3010908

Смежные вопросы