запрос 1 ко многим в одной записи с фильтром в MariaDB - PullRequest
0 голосов
/ 27 ноября 2018

Я в схеме MariaDB эти таблицы:

CLIENTI
id           | ragionesociale      | idZucchetti   | MORE COLS....
1            | SEA srl             | 569           | ....
2            | Contoso Srl         | 700           | ....
...

RIFERIMENTI_CLIENTI
ID  | riferimento         | idtipo        | idCliente  | MORE COLS....
1   | info@seasrl.it      | 2             | 1          | ....
2   | 003905623547        | 1             | 1          | ....
3   | 003905685748        | 6             | 1          | ....
4   | info@contoso.it     | 2             | 2          | ....
5   | 0039562475          | 1             | 2          | ....
6   | 00398562586         | 6             | 2          | .... 
...

Основной оператор SELECT, который я сейчас делаю, это

SELECT SQL_CALC_FOUND_ROWS c.idzucchetti,
                           c.ragionesociale,
                           c.indirizzo,
                           c.citta,
                           c.cap,
                           c.prov,
                           (SELECT riferimento
                            FROM   riferimenti_clienti AS rc
                            WHERE  rc.idcliente = c.id
                                   AND rc.idanagrafica = -1
                                   AND idtipo = 1) AS tel,
                           (SELECT riferimento
                            FROM   riferimenti_clienti AS rc
                            WHERE  rc.idcliente = c.id
                                   AND rc.idanagrafica = -1
                                   AND idtipo = 6) AS fax,
                           (SELECT riferimento
                            FROM   riferimenti_clienti AS rc
                            WHERE  rc.idcliente = c.id
                                   AND rc.idanagrafica = -1
                                   AND idtipo = 2) AS email
FROM   clienti AS c

, который дает этот результат

QUERY RESULT
idZucchetti  | ragionesociale  ... | tel              | fax              | email
569          | SEA srl             | 003905623547     | 003905685748     | info@seasrl.it
700          | Contoso Srl         | 0039562475       | 00398562586      | info@contoso.it

первый вопрос: правильный ли способ получения результатов?

второй вопрос: мне нужно отфильтровать столбцы по тел, факсу или электронной почте.Когда я пишу в предложении «ГДЕ»

tel LIKE '%...%'

или по факсу или электронной почте, я получаю эту ошибку:

Error Code: 1054. Unknown column 'tel' in 'where clause'

как я могу это сделать?

...