2016-11-22 1 views
0

Я пытаюсь найти все отдельные строки с отчетливым или уникальным In_Column значения для каждого Item_ID (нашего relational_id здесь), где Item_Table = «X» и Timestamp из строка является самой высокой для этого отдельного In_Column + Item_ID + Item_Table, но ниже заданного значения.MySQL Выберите отчетливый столбец для каждого Relational_ID где по величине метки ниже X

sample_table

In_Column End_Value Item_Table Item_ID Timestamp 
---------------------------------------------------------- 
Length 3   Pipe  3  2016-07-29 09:00:00 
Length 2   Pipe  3  2016-07-30 09:00:00 
Length 5   Pipe  4  2016-07-30 11:00:00 
Kg  12  Pipe  3  2016-07-29 09:00:00 
Kg  25  Steel  1  2016-07-29 09:00:00 

Идеальный результат, если поставляется дата была текущее время и Item_Table = 'Pipe'

In_Column End_Value Item_Table Item_ID Timestamp 
---------------------------------------------------------- 
Length 2   Pipe  3  2016-07-30 09:00:00 
Length 5   Pipe  4  2016-07-30 11:00:00 
Kg  12  Pipe  3  2016-07-29 09:00:00 

Упорядочение не имеет значения, как я буду заливкой возвращение (который будет большим, в таблице будет много совпадающих строк) в массив после извлечения.

Извините за то, что не предоставил пример запроса, я играл с некоторыми связанными ЛЕВЫМИ СПУТНИКАМИ, но их время выполнения было довольно длинным, а результирующий набор был не таким конкретным, как предполагалось.

ответ

0

Это должно работать для вас

SELECT 
    `t1`.* 
FROM 
    `your_table` `t1` 
     INNER JOIN 
      (
       SELECT 
        `Item_ID`, 
        `In_Column`, 
        MAX(`Timestamp`) AS `latest` 
       FROM 
        `your_table` 
       WHERE 
        `Item_Table` = 'Pipe' AND 
        `Timestamp` < 'Supplied Time' 
       GROUP BY 
        `Item_ID`, `In_Column`) `t2` 
     ON 
      `t1`.`Item_ID` = `t2`.`Item_ID` AND 
      `t1`.`In_Column` = `t2`.`In_Column` AND 
      `t1`.`Timestamp` = `t2`.`latest` 
WHERE 
    `Item_Table` = 'Pipe' 

Просто замените your_table с правильным именем таблицы.

+0

Вот пример скрипта SQL http://sqlfiddle.com/#!9/36a2ab/1/0 – sajushko

+0

Спасибо, это именно то, что я был после! Приветствия за быстрый ответ, приятный макет и дополнительные усилия по созданию скрипки для него. Итак, это создает временные таблицы 'your_table' с псевдонимом t1, t2, затем используя их для сопоставления и вывода данных? – Elohim

+0

Что-то в этом роде. Когда вы используете внутреннее соединение из select, mysql создает временную таблицу. – sajushko

Смежные вопросы