简体   繁体   中英

MySQL query from different tables

I have two MySQL tables, 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). Value of 'address' NOT EQUAL to 'ADR', but 'ADR' always contains most part of 'address'.

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. Version of MySQL i'm using - Ver 5.0.51a for Win32 on ia32 (Source distribution). 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, '%')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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