2016-10-20 2 views
1
SET @sql = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM 
information_schema.columns WHERE table_schema = 'i2049127_wp1' AND table_name = 
'wp3_wpsp_ticket' AND column_name NOT IN ('wt.guest_name', 'wt.guest_email')), 
' from i2049127_wp1.wp3_wpsp_ticket wt,i2049127_wp1.wp3_wpsp_catagories wc where wt.cat_id=wc.id limit 1'); 

PREPARE data FROM @sql; 

EXECUTE data; 

Попытки соединить 2 таблицы, но я получаю сообщение об ошибке, как показано нижеНахождение проблемы при удалении общего идентификатора из 2Tables-Mysql

enter image description here

+1

Печать из строки запроса после того, как вы его создали, и ответ должен быть очевиден. –

+1

Кажется, что обе ваши таблицы имеют в них столбец 'id'. Для точки @ GordonLinoff вы бы увидели, что если вы посмотрели, что загружено в вашу переменную '@ sql', после того, как она была установлена ​​в этой первой строке. Я не знаком с вашим клиентом, но похоже, что '2' и' 3' могут быть ссылками на запросы, которые были предприняты и не выполнены в строке ошибки «Ошибка в запросе 2 3». – JNevill

+0

@GordonLinoff Я получаю неоднозначное имя столбца, потому что обе таблицы содержат имя столбца как «id» ... – JMR

ответ

1

Если это не нужно, проще что нужно сделать, это удалить id из колонок выбран:

SET @sql = CONCAT('SELECT ', 
        (SELECT GROUP_CONCAT(COLUMN_NAME) FROM 
information_schema.columns WHERE table_schema = 'i2049127_wp1' AND table_name = 
'wp3_wpsp_ticket' AND column_name NOT IN ('wt.guest_name', 'wt.guest_email', 'id')), 
        ' from i2049127_wp1.wp3_wpsp_ticket wt join i2049127_wp1.wp3_wpsp_catagories wc on wt.cat_id = wc.id limit 1'); 

Если вам это нужно, вы должны решить, какой из них:

SET @sql = CONCAT('SELECT ', 
        (SELECT GROUP_CONCAT((CASE WHEN COLUM_NAME = 'id' THEN 'wt.id' ELSE COLUMN_NAME END)) FROM 
information_schema.columns WHERE table_schema = 'i2049127_wp1' AND table_name = 
'wp3_wpsp_ticket' AND column_name NOT IN ('wt.guest_name', 'wt.guest_email')), 
        ' from i2049127_wp1.wp3_wpsp_ticket wt join i2049127_wp1.wp3_wpsp_catagories wc on wt.cat_id = wc.id limit 1'); 

Обратите внимание, что я также исправил архаичный синтаксис JOIN.

+0

Я получаю ошибку для второго варианта. На самом деле мне нужно сохранить wt.id – JMR

+0

Ошибка: ошибка в запросе (1064): ошибка синтаксиса около 'FROM information_schema.columns WHERE table_schema =' i2049127_wp1 'AND table_' в строке 2 – JMR

+0

((CASE КОГДА COLUM_NAME = 'id' THEN ' wt.id»ELSE END COLUMN_NAME) ошибка синтаксиса --- закрывающей скобки и столбец (случай, когда COLUMN_NAME = 'ID' THEN 'wt.id' ELSE END column_name)) – JMR

1

Я согласен с комментариями выше, за исключением мелких ошибок

SET @sql = CONCAT('SELECT ', 
       (SELECT GROUP_CONCAT((CASE WHEN COLUMN_NAME = 'id' THEN 'wt.id' ELSE COLUMN_NAME END)) FROM 
information_schema.columns WHERE table_schema = 'i2049127_wp1' AND table_name = 
'wp3_wpsp_ticket' AND column_name NOT IN ('wt.guest_name', 'wt.guest_email')), 
' from i2049127_wp1.wp3_wpsp_ticket wt join i2049127_wp1.wp3_wpsp_catagories wc on wt.cat_id = wc.id limit 1'); 
Смежные вопросы