简体   繁体   English

来自不同表的 MySQL 查询

[英]MySQL query from different tables

I have two MySQL tables, vdubl:我有两个 MySQL 表,vdubl:

+-------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+-------+ | PRIM | int(10) unsigned | NO | | 0 | | | NUM | int(11) | NO | | NULL | | | ADR | varchar(200) | YES | | NULL | | | NM | varchar(50) | YES | | NULL | | | ETJ | varchar(50) | YES | | NULL | | | DC | int(11) | YES | | NULL | | | DV | datetime | YES | | NULL | | | INUM | varchar(50) | YES | | NULL | | | BL | double(12,2) | YES | | NULL | | | PL | float(5,2) | YES | | NULL | | | SV | varchar(200) | YES | | NULL | | | REGN | varchar(50) | YES | | NULL | | | REGD | datetime | YES | | NULL | | | NSV | varchar(50) | YES | | NULL | | | OSP | varchar(200) | YES | | NULL | | | OSZ | varchar(200) | YES | | NULL | | | UL | varchar(100) | YES | | NULL | | | VP | varchar(50) | YES | | NULL | | | DZ | varchar(200) | YES | | NULL | | | COMM | varchar(200) | YES | | NULL | | | ROOMS | smallint(6) | YES | | NULL | | | JPL | float(5,2) | YES | | NULL | | | MUN | tinyint(1) | NO | | 0 | | +-------+------------------+------+-----+---------+-------+

And contracts:和合同:

+---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+----------------+ | pk | int(11) | NO | PRI | NULL | auto_increment | | sheet | int(2) | YES | | NULL | | | row | int(2) | YES | | NULL | | | cnum | varchar(200) | YES | | NULL | | | cform | varchar(100) | YES | | NULL | | | condt | datetime | YES | | NULL | | | fam | mediumtext | YES | | NULL | | | famcom | int(10) | YES | | NULL | | | osz | varchar(200) | YES | | NULL | | | address | varchar(200) | YES | MUL | NULL | | | room | smallint(6) | YES | | NULL | | | s | varchar(100) | YES | | NULL | | | js | varchar(100) | YES | | NULL | | | note | varchar(200) | YES | | NULL | | | phone | varchar(100) | YES | | NULL | | | trmd | varchar(100) | YES | | NULL | | +---------+--------------+------+-----+---------+----------------+

I need to select all columns from table "vdubl", and one column from table "contracts" by condition (i need the value of 'cform' column of "contracts" table where column 'address' LIKE column 'ADR' of table vdubl).我需要从表“vdubl”中选择所有列,并按条件从表“contracts”中选择一列(我需要“contracts”表的“cform”列的值,其中列“address”LIKE 表vdubl的“ADR”列)。 Value of 'address' NOT EQUAL to 'ADR', but 'ADR' always contains most part of 'address'. “地址”的值不等于“ADR”,但“ADR”始终包含“地址”的大部分内容。

I tried something like this (subquery):我试过这样的事情(子查询):

"Select ADR as 'Address',DV as 'Date',NUM as 'Number',(select cform from contracts where address like '%vdubl.ADR') as 'Form' from vdubl"

But it always returns empty column 'Form' for all rows... How can I do what I need?但它总是为所有行返回空列“表单”......我该如何做我需要的?

I tried this in C# and MySQL.Data.MySQLClient if it is matter.如果有问题,我在C#MySQL.Data.MySQLClient尝试了这个。 Version of MySQL i'm using - Ver 5.0.51a for Win32 on ia32 (Source distribution).我正在使用的 MySQL 版本 - Ver 5.0.51a for Win32 on ia32(源代码分发)。 Sorry for my English, it's not my native language.对不起,我的英语不是我的母语。

I think you are trying to join two tables by "address" values.我认为您正试图通过“地址”值连接两个表。

SELECT t1.ADR AS 'Address',
t1.DV AS 'Date',
t1.NUM AS 'Number',
t2.cform
FROM vdubl AS t1
INNER JOIN contracts AS t2
ON t1.ADR LIKE CONCAT('%', t2.address, '%')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM