2016-09-25 3 views
0

우선, 제목에 조잡한 용어에 대한 사과. , user = $thisuser[id],mysql, 1 테이블 어디 다른 조건과 다른 테이블에 합류 조건

하나 "제품"(ID :

하나 "등급"(제품, 사용자 평가, 추가 된 행 :)

<? if ($thisguy == "noob") { echo("bear with me"); } ?> 

나는 두 개의 테이블이 이름) WHERE product.id = rating.product.

Ive는 조인 (내부, 외부, 왼쪽, 오른쪽 ...)에서 광범위하게 읽습니다. 그리고 이것에 척처럼 붙어 있습니다.

배열에 모든 정보 WHERE Product.id = ratings.product and user = $thisuser[id]이 필요합니다. 나는이 사용하고

: 제품 테이블에서

$result = mysql_query("SELECT ratings.product, ratings.user, ratings.rating, ratings.added FROM ratings INNER JOIN products ON products.id = ratings.product AND user = $THISUSER[id]"); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $product = $row['product']; 
    $user = $row['user']; 
    $rating = $row['rating']; 
    $added = $row['added']; 
    $pid = $row['id']; 
    $pname = $row['name']; 
    } 
print("$user, $rating, $added, $THISUSER[id], $pname, $pid"); } 

이 모든 등급 표에 생산 (그러나 하나의 인스턴스 만) 아무것도 ... 나는 어떤이 100 가지 방법을 시도했습니다 이익. 어떤 도움이라도 대단히 감사하겠습니다! 나 좀 쉬워. * winces

+0

당신은 테이블 사이의 관계와 함께 테이블 구조를 제공 할 수 있습니다) (내부에 넣어. – Naruto

+0

'LEFT JOIN'을 시도해보십시오. 'products' 테이블에서 컬럼을 선택하면 모든'NULL' 값을 볼 수 있습니까? –

+0

@ naruto : 사과드립니다. 이것은 나의 첫 번째 게시물입니다. 나는 구조를 제공하는 방법을 잘 모르겠습니다. 유일한 관계는 products.id 및 ratings.product입니다. @ Tim Biegeleisen : 있습니다. 인쇄하는 곳, 제품 정보뿐 아니라 모든 정보가 있습니다. 2 개의 쉼표로 단지 빈 공간 – user3502802

답변

0

당신이 당신의 설명은 코드와 같은 다른 테이블 이름을 포함하고 있기 때문에 올바른 쿼리에서 제공 한 데이터베이스 이름을 확인합니다 당신이 만든 것.

참고 : 등급 테이블 만 선택하고 제품 테이블에서 선택하지 않고 코드에서 제품 테이블의 제품 이름을 선택했습니다.

당신은 당신이 JOIN query를 사용하면 완벽 할 것이다 있도록 WHERE와 함께 ON 조건을 사용해야합니다. 조인 QUERY의 구문은 그 결과로 발생합니다.

ON의 비교 값과 WHERE의 값을 비교하여 데이터가 예상 한 것과 비슷하게 보이도록 할 수 있습니다.

JOIN QUERY은 귀하의 경우 다음과 같이 보입니다.

$query = "SELECT rating.product,rating.user,rating.rating,product.name FROM rating INNER JOIN products ON products.id = rating.product WHERE rating.user ='".$thisuser['id']."'"; 
+0

이것도 작동하지 않았다. 이 사용자 만이 인쇄됩니다. – user3502802

+0

나는 이것을 작동 시켰습니다! 그러나 여러 개가 있어야 할 때 한 개의 결과 만 보여줍니다. 내가 잊고 있는게 있니? – user3502802

+0

루프 외부의 모든 값을 표시하려면 값을 배열로 저장 한 다음 루프 외부에서 변수를 인쇄해야 필요한 모든 값을 표시 할 수 있습니다. 그렇지 않으면 여러 값이있는 경우 모든 값을 표시하도록 루프 자체 내에 명령문을 표시 할 수 있습니다. –

0
SELECT ratings.product, ratings.user, ratings.rating, ratings.added FROM ratings INNER JOIN products ON products.id = ratings.product WHERE ratings.user = $THISUSER[id] 

이것을 시도해보십시오. 마지막 절에서 AND 대신 WHERE를 사용하십시오.

+0

이것은 $ thisuser [id] 만 출력하고, 나머지는 공백이다. – user3502802

1
당신은 제품 테이블에서 모든 열을 선택하지 않는

이 변경 당신의 선택 같은

$result = mysql_query("SELECT ratings.product, ratings.user, ratings.rating, ratings.added, products.id, products.name FROM ratings INNER JOIN products ON products.id = ratings.product where ratings.user = $THISUSER[id]"); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $product = $row['product']; 
    $user = $row['user']; 
    $rating = $row['rating']; 
    $added = $row['added']; 
    $pid = $row['id']; 
    $pname = $row['name']; 
    } 
print("$user, $rating, $added, $THISUSER[id], $pname, $pid"); } 
0

$ THISUSER [id]에 유효한 값이 포함되어 있는지 확인하십시오.

는 VAR이 방법 ​​

$acc_user = $THISUSER[id]; 

"SELECT ratings.product, ratings.user, ratings.rating, ratings.added 
FROM ratings 
INNER JOIN products ON (products.id = ratings.product 
       AND ratings.user = $acc_user) " 

를 할당 시도하고 당신과 함께 ON 절을 사용하여 결국

+0

이것은 단지 $ acc_user id #만을 제공합니다. – user3502802

관련 문제