2012-02-27 129 views
1

我有MySQL查询利尔问题MySQL查询失败

我有2个表A和B

table A {id, name, gender} 
table B{id, name, salary} 

我想作一个查询来获取name, gender, salary,但我的查询,似乎只有拿到namegender

查询是:

select * from tableA inner join tableB on tableB.id=tableA.id ; 
+0

尝试左连接而不是内部 – OptimusCrime 2012-02-27 07:58:22

+0

@OptimusCrime:为什么?这种情况下的解释是什么? – VolkerK 2012-02-27 08:23:55

+0

名称?什么名字? table_a.name或table_b.name? – 2012-02-27 08:28:16

回答

1
 
SELECT a.name, a.gender, b.salary 
FROM tableA AS a 
LEFT JOIN tableb AS b ON(a.id = b.id) 
WHERE 1; 
0

尝试

select Ta.name, Ta.gender, Tb.salary from tableA as Ta join tableB as Tb on Ta.id = Tb.id; 

或者你可以尝试

select Ta.name, Ta.gender, Tb.salary from tableA Ta, tableB Tb where Ta.id = Tb.id; 

两个查询将工作相同。

0

我无法重现您的问题。

<?php 
define('QUERY', 'select * from tableA inner join tableB on tableB.id=tableA.id'); 

$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly'); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
setup($pdo); 
echo PHP_VERSION, "\n"; 
echo 'client: ', $pdo->getAttribute(PDO::ATTR_CLIENT_VERSION), "\n"; 
echo 'server: ', $pdo->getAttribute(PDO::ATTR_SERVER_VERSION), "\n"; 

foreach($pdo->query(QUERY, PDO::FETCH_ASSOC) as $row) { 
    print_r($row); 
} 

function setup(PDO $pdo) { 
    $pdo->exec(' 
     CREATE TEMPORARY TABLE tableA (
      id int, 
      name varchar(16), 
      gender int, 
      key(id) 
     ) 
    '); 
    $pdo->exec(' 
     CREATE TEMPORARY TABLE tableB (
      id int, 
      name varchar(16), 
      salary int, 
      key(id) 
     ) 
    '); 
    $pdo->exec("INSERT INTO tableA (id,name,gender) VALUES (1, 'nA', 1), (2, 'nb', 1), (3, 'nc', 1), (4, 'nd', 1)"); 
    $pdo->exec("INSERT INTO tableB (id,name,salary) VALUES (1, 'nA', 1), (2, 'nb', 4), (3, 'nc', 9), (4, 'nd', 16)"); 
} 

打印

5.3.8 
client: mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $ 
server: 5.5.16 
Array 
(
    [id] => 1 
    [name] => nA 
    [gender] => 1 
    [salary] => 1 
) 
Array 
(
    [id] => 2 
    [name] => nb 
    [gender] => 1 
    [salary] => 4 
) 
Array 
(
    [id] => 3 
    [name] => nc 
    [gender] => 1 
    [salary] => 9 
) 
Array 
(
    [id] => 4 
    [name] => nd 
    [gender] => 1 
    [salary] => 16 
) 

(如预期)。