2013-08-25 2 views
1

여러 테이블에서 모든 행을 선택하려고했지만 시간이 많이 걸렸습니다. 나는 점점 오전 : 테이블이 어떤 관계가없는열 이름이 모호합니다. mysql

column name firstname is ambiguous 

, 난 그냥 문자열을 일치하는 모든 테이블을 검색하는 쿼리를 필요로하는 모든 행을 선택합니다. 검색 창이 있습니다.

열 번호가 일치하지 않는 여러 테이블에서 모든 행을 선택하는 더 좋은 방법이 있습니까? 나는 UNION ALL을 시도했지만 오류가 발생합니다. 당신은 모두 당신의 테이블의 컬럼 firstname을 가지고 있기 때문에 그 오류가 와서

SELECT * FROM `table1` t1 
    JOIN `table2` t2 ON t1.joinitem = t2.joinitem 
    WHERE t1.firstname = ? 

답변

1

시도를 도와주세요. 어느 firstname을 지정하지 않으면 SQL은 table1의 firstname 또는 table2의 firstname을 기준으로 쿼리를 수행할지 여부를 알 수 없습니다.

SQL에서 의미하는 바가 있는지 확인하려면 열 이름 앞에 테이블 이름을 붙입니다.

또한 JOIN 조건은 joinitem.tablename 대신 tablename.joinitem이어야한다고 생각합니다. 여기

은 가정 일례 firstname 당신이 table2에서입니다 원하는입니다 :

SELECT * 
FROM `table1` t1 
JOIN `table2` t2 ON t1.joinitem = t2.joinitem 
WHERE t2.firstname = ? 
0

처럼, WHERE 절에 특정되는

$mydb = new mysqli('localhost', 'root', '', 'db'); 
$stmt = $mydb->prepare("SELECT * FROM `table1` t1 JOIN `table2` t2 ON joinitem.t1 = joinitem.t2 where firstname = ? "); 
stmt->bind_param('s', $firstname); 
echo $mydb->error; 
$stmt->execute(); 
+0

오류가 없어하지만 난 행을 에코 할 때'$가> get_result을 = $ stmt- 결과(); var_dump ($ result); while ($ row = $ result-> fetch_assoc()) { echo $ row [ 'firstname'];} 빈 페이지가 생깁니다. – amdvb

+0

저는 PDO를 처음 사용하기 때문에 추측하고 있습니다. 나는 문제가'$ stmt-> get_result()'라고 생각한다. '$ stmt-> fetchAll (PDO :: FETCH_ASSOC);을 사용해보십시오. 참고로 [이 링크] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)를 참조하십시오. – Sutandiono

관련 문제