2013-05-24 5 views
0

Я пытаюсь объединить две таблицы, чтобы подсчитывать данные из строки в одном из них.Sql join and count rows

pin.id и repin.from_pin_id являются основными в двух разных таблицах.

Я пытаюсь подсчитать количество строк в переменной repin.from_pin_id, где board_id равно определенной переменной ($ boardDetails-> id). board_id находится в pins, поэтому я пытаюсь присоединиться к этому столу repin. Это единственный способ извлечь конкретный идентификатор платы.

<?php 
$result = mysql_query("SELECT repin.from_pin_id, pins.id COUNT(from_pin_id) FROM repin WHERE from_pin_id = pins.id LEFT JOIN pins ON repin.from_pin_id = pins.id"); 
$countit = mysql_result($result, 0); 
?> 

Не повезло. Надеюсь, это натолкнулось на него, его трудно объяснить.

EDIT:

Вот решение, я изо всех сил, потому что я был ошибочно использует неправильный поле. Поле from_pin_id должно было быть owner_user_id.

Я взял некоторые предложения и получил его на работу. Спасибо, парни.

<?php 
$result = mysql_query("SELECT COUNT(owner_user_id) 
FROM repin 
INNER JOIN pins ON pins.id = repin.from_pin_id 
WHERE owner_user_id='$boardDetails->user_id' 
AND pins.board_id='$boardDetails->id'"); 
$countit = mysql_result($result, 0); 
?> 
+0

Как не повезло? Выводит ли заявление неправильные результаты или вы получаете сообщение об ошибке, и если да, то какое сообщение об ошибке? – shf301

+0

Сообщение: mysql_result() ожидает, что параметр 1 будет ресурсом, имеет значение boolean –

+0

Я только что посмотрел руководство для [mysql_query] (http://uk3.html/manual/en/function.mysql-query .php), в котором говорится: «Для SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих набор результатов, mysql_query() возвращает ресурс с успехом или FALSE при ошибке», и я предполагаю, что с вашим предложением select что-то не так. Вы пытались запустить его в программе запросов к базе данных? Кажется, я вижу пропущенную запятую в списке столбцов. – nurdglaw

ответ

1

Если я понять, что вы пытаетесь сделать, это выглядит, как вы хотите, чтобы делать что-то вроде этого:

SELECT repin.from_pin_id, pins.id, COUNT(from_pin_id) 
FROM repin 
    LEFT JOIN pins ON repin.from_pin_id = pins.id 
GROUP BY repin.from_pin_id, pins.id 

Вам не нужно ваше положение WHERE - это обрабатывается в JOIN. И вам нужно добавить предложение GROUP BY.

+0

Я думаю, что неправильно объяснил. pin.id и repin.from_pin_id являются основными в двух разных таблицах. Я пытаюсь подсчитать количество repin.from_pin_id, где board_id равно определенной переменной ($ boardDetails-> id). board_id находится в 'pins', поэтому я пытаюсь присоединиться к repin к этой таблице. Это единственный способ получить конкретную плату. –

2

Попробуйте SQL вместо того, чтобы я не знаком с PHP, так что вы, возможно, потребуется изменить строку обработки немного

<?php  
$result = mysql_query(" 
SELECT 
    repin.from_pin_id, 
    pins.id, 
    COUNT(from_pin_id) 
FROM 
    repin 
    LEFT JOIN pins ON 
     repin.from_pin_id = pins.id 
     AND " + $boardDetails->id +" = pin.board_id 
GROUP BY 
    repin.from_pin_id, 
    pins.id 
"); 
$countit = mysql_result($result, 0); 
?> 
+0

Я думаю, что неправильно объяснил. pin.id и repin.from_pin_id являются основными в двух разных таблицах. Я пытаюсь подсчитать количество repin.from_pin_id, где board_id равно определенной переменной ($ boardDetails-> id). board_id находится в 'pins', поэтому я пытаюсь присоединиться к repin к этой таблице.Это единственный способ получить конкретную плату. –

+0

Пожалуйста, обновите свой вопрос с помощью этой информации. –

+0

Я изменил это сейчас. –

1

вы можете попробовать на код ниже и вы пропустили comma между pin.id and count

<?php 
$result = mysql_query("SELECT repin.from_pin_id, pins.id,COUNT(from_pin_id) FROM repin INNER JOIN pins ON pins.id = repin.from_pin_id WHERE pins.board_id='".$boardDetails->id."'"); 
$countit = mysql_result($result); 
?> 
+0

Я думаю, что неправильно объяснил. pin.id и repin.from_pin_id являются основными в двух разных таблицах. Я пытаюсь подсчитать количество repin.from_pin_id, где board_id равно определенной переменной ($ boardDetails-> id). board_id находится в 'pins', поэтому я пытаюсь присоединиться к repin к этой таблице. Это единственный способ получить конкретную плату. –

+0

Я обновил запрос сейчас ... – sAnS