2012-02-27 13 views
1

私は2つのテーブルAとBmysqlのクエリに失敗

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

を持っているmysqlのクエリ

とlitle問題を抱えている私はname, gender, salaryを取得するクエリを作成したいと思いますが、私のクエリはのみ取得するようですnamegender

クエリは次のとおりです。

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

内部に代わって結合を試みる – OptimusCrime

+0

@OptimusCrime:なぜですか?この場合の説明は何でしょうか? – VolkerK

+0

名前?何という名前? table_a.nameまたはtable_b.name? –

答えて

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 
) 

(予想通り)。

関連する問題