MySQL查询整个数据库

时间:2015-12-29 21:06:27

标签: mysql

包含17个表的数据库。
基数成立:iddogownerregno
15个表格包含tablename_regnonumerous,其中INT类型。 最后一个表包含tablename_regno和三个变量字段

我想从Dog中选择ownerregnoTable1以及在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中的任何字段。

希望有所帮助

2 个答案:

答案 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 != ''
)
  

请注意:此解决方案仅适用于您拥有的三个表   提到的问题。您可以添加更多表格。