2010-08-12 4 views
2

Ok. 여기 내가 성취하려고하는 것이있다. 해당 텍스트 영역에 대한 모든 변경 사항을 볼 수 있도록 변경 내용을 양식 텍스트 영역에 저장합니다. 일련의 주석처럼. 데이터를 두 테이블에 넣었습니다. 다시 꺼내는 데 도움이 필요해.두 테이블의 데이터 표시

"worklog"와 "worklognotes"의 두 테이블에 데이터가 있습니다.

worklog은 $ 사양 호출되는 텍스트 영역이있는 양식에서 작업 지시하는 일련의

worklognotes 나는이 worklognotes에서

텍스트 영역 $ 사양에 대한 변경의 실행 목록입니다 worklog_id로 저장된 작업 기록의 ID가 변경되면 데이터가 올바른 작업 지시와 일치하게됩니다.

워크 로그의 정보를 잘 표시 할 수 있습니다. 하지만 나는 worklognotes에서 정보를 전혀 볼 수 없습니다. 내 목표는 worklognotes에서 데이터를 표시하고 worklognotes에 레코드를 표시하는 것입니다. worklognotes.worklog_id = worklog.id

이 정보가 도움이되기를 바랍니다. 이렇게 쓰는 것이 도움이되었습니다.

여기에 내가 사용하는 쿼리 문이 있습니다. 당신의 도움을 주셔서 감사합니다.

$connection=mysql_connect ("localhost", "foo", "bar") or die ("I cannot connect to the database."); 
$db=mysql_select_db ("database", $connection) or die (mysql_error()); 
$query = "SELECT * FROM worklog WHERE id=$id LIMIT 0,1"; 
$sql_result = mysql_query($query, $connection) or die (mysql_error()); 

$connection2=mysql_connect ("localhost", "foo", "bar") or die ("I cannot connect to the database."); 
$db=mysql_select_db ("database", $connection2) or die (mysql_error()); 
$query2 = "SELECT * FROM worklognotes,worklog WHERE worklognotes.worklog_id=worklog.id ORDER BY worklog_id DESC"; 
$sql_result2 = mysql_query($query2, $connection2) or die (mysql_error()); 

- 계속 - 여기에서 확인 09-13-10

내가 네 개의 항목이

$connection = mysql_connect ("localhost", "adsites_seth", "callie") or die ("I cannot connect to the database."); $db = mysql_select_db ("adsites_cerebra", $connection) or die (mysql_error());

$query = "SELECT * FROM worklog "; $query .= "LEFT JOIN worklognotes ON worklog_id = worklognotes.worklog_id "; $query .= "WHERE worklog.id=worklognotes.worklog_id ORDER BY worklognotes.worklog_id ASC";

$sql_result = mysql_query($query, $connection) or die (mysql_error());

수정 된 쿼리를하다 노동 인식에서 es 테이블과 4 개 모두 한 페이지에 표시됩니다. 내가보고있는 작업 기록에 속한 항목 하나가 필요하고 항목이없는 경우에만 필요합니다. 아무것도 표시하지 않습니다.

+0

두 번째 쿼리가 실패하거나 두 쿼리가 모두 실패합니까? 오류 정보가 출력되거나 KingMob 결과가 없습니까? –

+3

액세스해야하는 각 테이블에 별도의 데이터베이스 연결이 필요 없다는 것을 알고 계십니까? 사실 큰 부담입니다. –

+0

액세스 권한이있는 경우 mysql cli에서 쿼리를 테스트하는 것이 더 빠릅니다. 업데이트 된 답변. 이것이 초기 질문에 대한 답이지만 더 많은 질문이 있으면 따로 질문 해보십시오. –

답변

3

필자가 잘못 이해했다면 이해할 수있는 것처럼 작업 로그와 업무용 워크 북 사이에 '일대 다'관계가 있습니다.

이것이 사실 인 경우, worklog.id에 의해 행이 '결합'된 쿼리를 원합니다.

테스트되지 않은, 다음의 예는 사용이어야한다 :

<?php 
$connection = mysql_connect ("localhost", "foo", "bar") or die ("I cannot connect to the database."); 
$db = mysql_select_db ("database", $connection) or die (mysql_error()); 

$query = "SELECT * FROM worklog "; 
$query .= "LEFT JOIN worklognotes ON worklog.id = worklognotes.worklog_id "; 
$query .= "WHERE worklog.id=$id ORDER BY worklognotes.worklog_id ASC"; 

$sql_result = mysql_query($query, $connection) or die (mysql_error()); 
?> 

같은 줄 수있는 :

SELECT * FROM worklog LEFT JOIN worklognotes ON worklog.id = worklognotes.worklog_id 
WHERE worklog.id=1 AND worklog.id = 1 ORDER BY worklognotes.worknotes_id ASC; 

+-------------+----------------+----------------------------------------+ 
| id   | worknotes_id | log         | 
+-------------+----------------+----------------------------------------+ 
| 1   | 1    | Houses atre grate      | 
| 1   | 2    | Houses are grate      | 
| 1   | 3    | Houses are great      | 
+-------------+---------------------------------------------------------+ 
: 주어진 worklog.id에 대한 모든 worklognotes을 얻으려면

SELECT * FROM worklog LEFT JOIN worklognotes ON worklog.id = worklognotes.worklog_id 
WHERE worklog.id=1 ORDER BY worklognotes.worknotes_id ASC; 

+-------------+----------------+----------------------------------------+ 
| id   | worknotes_id | log         | 
+-------------+----------------+----------------------------------------+ 
| 1   | 1    | Houses atre grate      | 
| 1   | 2    | Houses are grate      | 
| 1   | 3    | Houses are great      | 
| 2   | 4    | Shop5 are smelly      | 
| 2   | 5    | Shops are smelly      | 
| 2   | 6    | Shopes aren't smelly     | 
+-------------+---------------------------------------------------------+ 

+1

필자는 AND가 WHERE ...이어야한다고 생각합니다. 그렇지 않으면 모든 작업 로그 항목을 가져오고 worklognotes 만 올바른 ID로 제한됩니다. – grossvogel

+0

내 고맙습니다. 고마워요. :) –

+0

그리고 @KingMob, 가장 최근에 작성한 작업 노트 만 원할 경우 쿼리 끝에 'LIMIT 1'을 추가 할 수 있습니다. (표시된 테이블은'worknotes_id ASC '와 같이 정렬되어 있지만, 주어진 쿼리는'DESC'를 사용하므로 첫 번째 레코드가 실제로 가장 최근의 레코드가됩니다.) – grossvogel

관련 문제