2014-02-04 4 views
0
I have this Query, I need it to pull a report of the registrants, but the report i get keeps duplicating the registrants on the result. 

SELECT DISTINCT * FROM registrants WHERE (paid='Y' AND course_id = '$course_info[0]' AND course_date = '$course_info[1]') 

Can anyone tell me what is doing that? 

Вот остальная часть кода !!! Мы хотим получить результаты зарегистрированных регистраторов. Но когда вы создаете отчет, он дает нам то же самое; позволяет говорить 8 регистраций один раз, затем два раза, затем три и так далее и так далее, пока не будет показан каждый регистранта по крайней мере 8 разПродолжить получать повторяющиеся результаты в моем отчете

$course_report = $_POST['course_report']; 

$course_info = explode('~',$course_report); 
$course_info[0]; // course_id 
$course_info[1]; // course_date 

$select = "SELECT DISTINCT * FROM registrants WHERE (paid='Y' AND course_id = '$course_info[0]' AND course_date = '$course_info[1]')"; 

$result = mysql_query($select); 
while($row = mysql_fetch_assoc($result)) 
{ 
$course = $row['course']; 
$coursedate = $row['course_date']; 

$export = mysql_query($select); 
$fields = mysql_num_fields($export); 
// Get header 
for ($i = 0; $i < $fields; $i++) { 
    $header .= mysql_field_name($export, $i) . "\t"; 
} 

// Get rows 
while($row = mysql_fetch_row($export)) { 
    $line = ''; 
    foreach($row as $value) {            
     if ((!isset($value)) OR ($value == "")) { 
      $value = "\t"; 
     } else { 
      $value = str_replace('"', '""', $value); 
      $value = '"' . $value . '"' . "\t"; 
     } 
     $line .= $value; 
    } 
    $data .= trim($line)."\n"; 
} 
+1

Вы проверили таблицу, чтобы увидеть, уникальны ли записи? Или вы знаете, что есть дубликаты, и вы хотите удостовериться, что возвращенные записи различаются на основе 'paid',' course_id' и 'course_date'? Используя '*', вы основываете различие на * каждом столбце в строке *, а не только на трех, которые у вас есть в вашем ограничении. –

+0

Мы хотим получить результаты от регистраторов, которые заплатили плату за курс. Вот остальная часть кода, может быть, вы можете увидеть что-то в нем, что приводит к тому, что результат дублирует результат, когда он экспортируется в Excel. Извините за несколько комментариев, но код слишком длинный, чтобы вписаться в один. – Campos39

+0

$ course_report = $ _POST ['course_report']; $ course_info = explode ('~', $ course_report); $ course_info [0]; // course_id $ course_info [1]; // course_date $ select = "SELECT DISTINCT * FROM registeristrants WHERE (paid = 'Y' AND course_id = '$ course_info [0]' AND course_date = '$ course_info [1]')"; $ result = mysql_query ($ select); – Campos39

ответ

2

Вы выбираете все столбцы из таблицы, даже если вы только фильтрации на три. Скорее всего, один из ваших столбцов имеет разные данные для каждого регистратора. Что вы хотите быть отличным? Если вам просто нужны эти три столбца, то SELECT DISTINCT PAID, COURSE_ID, COURSE_DATE вместо всех столбцов.

+0

Надеюсь, что с кодом выше это лучше объясняет, что мы пытаемся сделать, или где ошибка в нем! – Campos39

+0

Проблема по-прежнему заключается в том, что вы выбираете *. чтобы выбрать только те столбцы, которые вам нужны для отчета. Я бы предложил запустить ваш выбор и просмотреть дубликаты. Беглый взгляд должен показать, какой столбец отличается между «дублирующимися» записями - возможно, полем datetime или чем-то - и ограничивать только ваш выбор к столбцам, которые вам нужны для отчета, например, имя владельца, курс и т. д. – Joel

+0

Похож на W Петли HILE были объединены вместе. Таким образом, они были отделены друг от друга, и это фиксировало проблему генерируемых данных несколько раз. Теперь единственная проблема заключается в том, что заголовок повторяется снова и снова в отчете. Вот код только для заголовка. // Получить заголовок для ($ i = 0; $ i <$ fields; $ i ++) { $ header. = Mysql_field_name ($ export, $ i). "\ Т"; } – Campos39