나는 2 개의 MYSQL 테이블을 가지고있다. main_table 및 query1. main_table은 position 및 chr 열을 포함하고 query1은 position, chr 및 symbol을 포함합니다. 테이블 query1은 main_table을 쿼리하여 파생됩니다. 첫 번째 열에는 main_table의 전체 위치 목록이 있고 두 번째 열에는 그 위치에 해당하는 기호가 출력되도록 Perl을 사용하여이 두 테이블을 모두 일치 시키려고합니다. 기호가 전혀 없거나 하나의 기호 또는 각 위치의 기호가 여러 개있을 수 있습니다. 나는이에 대한 코드 위로를 작성하는 방법을 아주 확실하지 오전Perl을 사용하여 MySQL 테이블 일치하기
은, 현재 나는
#!/usr/bin/perl
use strict;
use DBI;
my %ucsc;
my $dbh = DBI->connect('DBI:mysql:disc1pathway;user=home;password=home');
my $dbs = DBI->connect('DBI:mysql:results;user=home;password=home');
my $main = $dbh->prepare("select chr, position from main_table");
my $q1 = $dbs->prepare("select position, symbol, chrom from query1");
$main->execute();
$q1->execute();
while (my $main_ref = $main->fetchrow_hashref()) {
$ucsc{$main_ref->{chr}}{$main_ref->{position}} = 1;
}
while (my $gene_ref = $q1->fetchrow_hashref()) {
my $q1position = $gene_ref->{position};
my $q1symbol = $gene_ref->{symbol};
my $q1chr = $gene_ref->{chr};
foreach my $ucsc (keys %{$ucsc{$q1chr}}) {
print "$ucsc $q1symbol\n";
}
}
$dbh->disconnect();
$dbs->disconnect();
exit (0);
main_table과 쿼리 2의 예는 다음과
있습니다. 원하는 결과물은 내가 기대하는 바이며 Excel에서 VLOOKUP 함수를 사용하여 출력했습니다. 이미 모든 데이터를 가지고 사전에main_table
CHR Position
chr1 229830537
chr1 229723373
chr1 229723385
chr1 229723393
chr1 229723420
chr1 229829627
chr1 229723430
chr1 229829926
chr1 229723483
chr1 229723490
chr1 229723499
chr1 229723501
chr1 229830343
chr1 229723534
chr1 229723540
chr1 230039934
chr1 229723576
chr1 229830537
chr1 229830469
chr1 229725982
chr1 229726209
chr1 229966154
chr1 229726439
chr1 229726726
chr1 229726755
chr1 229726973
chr1 229967564
chr1 229727249
chr1 229727408
chr1 229727612
chr1 229728018
chr1 229728050
chr1 229728435
chr1 229728513
chr1 229966327
Query1
symbol CHR Position
C1 chr1 229829230
C1 chr1 229829278
C1 chr1 229829442
C1 chr1 229829627
C1 chr1 229829653
C1 chr1 229829683
C1 chr1 229829810
C1 chr1 229829926
C1 chr1 229829961
C1 chr1 229830085
C1 chr1 229830086
C1 chr1 229830087
C1 chr1 229830088
C1 chr1 229830141
C1 chr1 229830343
C1 chr1 229830469
C1 chr1 229830534
C1 chr1 229830537
C2 chr1 230039932
C2 chr1 230039934
C2 chr1 230039939
C2 chr1 230039944
457 chr1 229966154
457 chr1 229966327
457 chr1 229966500
457 chr1 229966552
457 chr1 229966748
457 chr1 229966998
457 chr1 229967327
457 chr1 229967564
457 chr1 229967594
457 chr1 229829627
Desired Output
Position symbol
229830537 C1
229723373
229723385
229723393
229723420
229829627 C1, 457
229723430
229829926 C1
229723483
229723490
229723499
229723501
229830343 C1
229723534
229723540
230039934 c2
229723576
229830537 C1
229830469
229725982
229726209
229966154 457
229726439
229726726
229726755
229726973
229967564 457
229727249
229727408
229727612
229728018
229728050
229728435
229728513
229966327
덕분에
카렌
예제 데이터를 얻을 수 있습니까? – jeje
이미 코드가 있습니까? Perl이나 SQL 부분에 문제가 있습니까? – innaM
SQL join에 대해 들었습니까? http://en.wikipedia.org/wiki/Join_%28SQL%29 –