2014-03-05 2 views
0

하나의 데이터베이스 (my_db)에 3 개의 테이블 tbl1, tbl2 및 tbl3을 만들었습니다. 내 질문은 어떻게 하나의 검색에서 이러한 세 테이블의 데이터를 검색 할 수 있습니까?전체 데이터베이스 내에서 데이터를 검색하는 방법

내 코드.

<?php 
    include('connect-db.php'); 
     include('sort.php'); 

$Search = isset($_GET['Search']) ? '%'.$_GET['Search' ].'%' : '' ; 

$result = mysql_query("SELECT * FROM tbl1, tbl2, tbl3 where name like '$Sea'"); 

?> 
+0

테이블간에 관계가 있습니까? –

+0

조인을 사용하고 모든 테이블에서 필요한 텍스트를 검색하십시오. – PravinS

+0

이것이 필요한가요? http://stackoverflow.com/questions/4619090/append-results-from-two-queries-and-output-as-a-single-table – krowe

답변

1

Joins은 각 테이블이 서로 공유 관계에있는 경우에 사용됩니다. 예를 들어, 사용자는 프로필과 게시 된 문서 목록을 가질 수 있습니다. 그러면 각 테이블이 결과의 추가 열로 출력됩니다.

SELECT * FROM tbl1 
    JOIN tbl2 ON tbl1.id=tbl2.id 
    JOIN tbl3 ON tbl1.id=tbl3.id 
WHERE tbl1.name LIKE '$Sea' 

당신이 결과에 추가 행이 다음은 union를 사용할 수있는 각 테이블을 추가하려면

. 이 작업을 수행하려면 모든 테이블에서 결과를 동일하게 구조화해야합니다. 이러한 이유로 테이블의 구조가 매우 유사 할 때 노동 조합이 가장 잘 작동합니다. 노동 조합은 두 세트에서 중복 된 항목을 제거합니다. 두 세트가 구별되어 있거나 중복을 신경 쓰지 않는다면, union all이 더 나은 결과를 보일 것입니다. 특히 결과 세트가 커질수록 더욱 좋습니다.

SELECT * FROM tbl1 WHERE tbl1.name LIKE '$Sea' 
UNION SELECT * FROM tbl2 WHERE tbl2.name LIKE '$Sea' 
UNION SELECT * FROM tbl3 WHERE tbl3.name LIKE '$Sea' 

UPDATE : 다른 언급이 또한, 당신은 더 이상 사용되지 사용하는 MySQL의 기능을합니다.

<?php 
/* Connect to an ODBC database using PDO (which is more secure than the 
    older mysql libraries because it supports query parameters). */ 
$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; 
$user = 'dbuser'; 
$password = 'dbpass'; 

try { 
    $conn = new PDO($dsn, $user, $password); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

// Query example 
$sql = 'SELECT * FROM table_name'; 
foreach($conn->query($sql) as $row) { 
    echo $row['id'].', '.$row['anotherfield'].'<br>'; 
} 
+0

감사의 번들 ....... krowe –

+0

경고 : mysql_fetch_assoc()은 매개 변수 1이 리소스가 될 것으로 기대하며, 부울은 C : \ wamp \ www \ Quest \ Product \ search.php에 211 행으로 표시됩니다. –

+0

이제 위의 오류는 지금 내가 뭘해야하는지 안내해 주시겠습니까? –

0

은 기본적으로 당신이 데이터베이스를 조회하는 동안, 테이블은 그들 사이의 관계의 일종이 있어야합니다 JOINS 사용하는 조인 구현해야 : 여기 MYSQL를 연결하여 사용할 수있는 더 좋은 방법의 샘플입니다.

그래서 일단 쿼리에서 JOINS를 사용하면 결과를 쉽게 얻을 수 있습니다.

+0

감사합니다 prafful ........ –

관련 문제