包含17个表的数据库。
基数成立:id
,dog
,owner
,regno
15个表格包含tablename_regno
和numerous
,其中INT
类型。
最后一个表包含tablename_regno
和三个变量字段
我想从Dog
中选择owner
,regno
和Table1
以及在15个表格和fields >0
中选择所有variable fields <> 'xxxx'
在表17中
这可能没有列出所有字段名称等吗?
我可以以某种方式合并SELECT from Information_schema.columns
注意:regno = tablename_regno
---------------------澄清------------
CREATE TABLE base(
id INT(4) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
regno VARCHAR(20) NOT NULL,
owner VARCHAR(50) NOT NULL,
dog VARCHAR(50) NOT NULL
);
CREATE TABLE conf(
id INT(4) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
conf_regno VARCHAR(20) NOT NULL,
conf_CH_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx',
conf_CH_V INT(2) UNSIGNED NOT NULL DEFAULT 0,
conf_GCH_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx',
conf_SN_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx',
conf_SN_V INT(2) UNSIGNED NOT NULL DEFAULT 0
);
I have 15 tables similar to the one above
CREATE TABLE versatile(
id INT(4) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
v_regno VARCHAR(20) NOT NULL,
v_VL_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx',
v_VLA_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx',
v_VLX_Y VARCHAR(4) NOT NULL DEFAULT 'xxxx'
);
我需要来自base的dog,owner和regno,以及15个表中的所有INT字段&gt; 0,以及多功能not_equal to xxxx中的任何字段。
希望有所帮助
答案 0 :(得分:0)
没有“动态”sql,你不想做什么;这是一种简洁的说法“使用来自information_schema的模式和/或数据的知识在执行期间构造查询”(通常在“代码”或存储过程中完成)。
查询必须明确定义返回哪些字段(或全部包含*
或tablename.*
)以及使用哪些表。
编辑:一种解决方法是创建一个VIEW
,即这15个表中的UNION
,并将“基础”表加入其中。
对此任务的需求表明这15个表可能应该是一个表,还有一个额外的字段可以将行分类为15个不同的“组”。
答案 1 :(得分:0)
试试这个:
SELECT b.regno,b.owner,b.dog,c.*,v.*
FROM base b
INNER JOIN conf c ON c.conf_regno = b.regno
INNER JOIN versatile v ON c.v_regno = b.regno
WHERE
(
c.conf_CH_V > 0 AND c.conf_SN_V > 0
)
AND
(
c.conf_regno != '' AND c.conf_CH_Y != '' AND c.conf_GCH_Y != ''
AND c.conf_SN_Y != '' AND v.v_regno != '' AND v.v_VL_Y != ''
AND v.v_VLA_Y != '' AND v.v_VLX_Y != ''
)
请注意:此解决方案仅适用于您拥有的三个表 提到的问题。您可以添加更多表格。