Как ВЫБРАТЬ 2 поля из одной таблицы и сравнить их по 1 полю другой таблицы - PullRequest
0 голосов
/ 22 декабря 2010

Я использую mysql / php / apache .У меня следующая ситуация:

2 таблицы, где мне нужно сравнить некоторую информацию, если я использую INNER JOIN, не проблема, но у меня есть проблема в моих столбцах.

Таблица 1 -> invoices_accountТаблица 2 -> invoices_payable

на моем invoices_account У меня есть следующие поля: id, categ, categ_name, code, name, active, essential

на моем invoices_payable У меня есть: id, ..(all my fields).. , reference

значение моей ссылки на поле в invoices_payable - это то же значение категории и кода в другой таблице invoices_account.Он был объединен только в одном поле.

Теперь мне нужно отчитываться только по основным счетам, и я понятия не имею, как ВЫБРАТЬ 2 поля из одной таблицы и сравнить их на 1 поле другой таблицы.

Надеюсь, я поясню, что это понятно, но это не та ситуация, которая не была запланирована в этом проекте.Теперь я не могу изменить структуру своей базы данных, потому что у меня внутри тонны данных.

Кто-нибудь знает, как решить эту горячую проблему?Большое спасибо за все.

Мой старый запрос был примерно таким, но не работал, потому что поля category и код должны быть объединены сравнивать с referencia .

SELECT SUM(ip.total) as total, ip.due_date, ip.status, ip.referencia 
FROM invoices_payable ip 
INNER JOIN invoices_account ON ip.referencia = invoices_account.code 
WHERE due_date BETWEEN '$dinov' and '$dfnov' 
AND invoices_payable.referencia = invoices_account.code 
AND invoices_payable.status ='paid' 
AND invoices_account.essential = 1
  • ГДЕ $ dinov, $ dfnov - моя дата.

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

Вы можете использовать функцию CONCAT () в предложении ON вашего объединения.

Это может быть очень медленно, так как он не сможет использовать индекс для invoices_account_table, но функционально вы должны иметь возможность использовать такой запрос:

select ...
from invoices_account
inner join invoices_payable 
  on invoices_payable.reference = concat(invoices_payable.categ,invoices_payable.code);
1 голос
/ 22 декабря 2010
SELECT categ_name, ... FROM invoices_account 
JOIN invoices_payable 
ON CONCAT(invoices_account.categ, invoices_account.code) = invoices_payable.reference
0 голосов
/ 22 декабря 2010

Ответ на другой вопрос.Спасибо.

В конце мой запрос выглядит так

$sql = "SELECT SUM(invoices_payable.total) as total, invoices_payable.due_date, invoices_payable.status, invoices_payable.referencia, invoices_payable.status, invoices_account.essential \n"
    . "FROM invoices_account \n"
    . "INNER JOIN invoices_payable \n"
    . "ON invoices_payable.referencia = concat(invoices_account.categ,invoices_account.code) \n"
    . "WHERE due_date BETWEEN \'2010-11-01\' and \'2010-12-01\' \n"
    . "AND invoices_payable.status =\'paid\' \n"
    . "AND invoices_account.essential = 1";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...