2013-06-13 4 views
-4

Хороший день для всех,Как я могу показать последнюю запись в PHP MySQL?

Я новичок программист PHP, я хотел бы попросить о помощи или любой идее о том, как я могу показать последнюю запись в моей программе PHP MySQL.

Цель:

только показать запись с последней ревизии в главной таблице. например,

################################# 
id  filename revision 
1  math12  1 
2  math12  2 
3  science43 1 
4  science43 2 
5  science43 3 
3  logic13  1 
4  logic13  2 
5  logic13  3 
################################# 

Когда я забираю всю запись, моя цель - показать только запись с последней версией.

################################# 
id  filename revision 
2  math12  2 
5  science43 3 
5  logic13  3 
################################# 

как это ..

вы можете помочь мне с моей проблемой ..

спасибо большое ..

Что, кажется, проблема в этом Кодексе ??

SELECT 
           imaster_tbl.id, 
           imaster_tbl.die_name, 
           imaster_tbl.part_name, 
           imaster_tbl.drawing_number, 
           imaster_tbl.drawing_part_number, 
           imaster_tbl.sub_letter, 
           imaster_tbl.specs, 
           imaster_tbl.file_path, 
           idrawing_type_tbl.drawing_type, 
           idie_type_tbl.die_type, 
           irevision_tbl.revision, 
           irelay_type_tbl.relay_type FROM imaster_tbl 
           LEFT JOIN idrawing_type_tbl ON imaster_tbl.drawing_type_id = idrawing_type_tbl.drawing_type_id 
           LEFT JOIN idie_type_tbl ON imaster_tbl.die_type_id = idie_type_tbl.die_type_id 
           LEFT JOIN irelay_type_tbl ON imaster_tbl.relay_type_id = irelay_type_tbl.relay_type_id 
           LEFT JOIN irevision_tbl ON imaster_tbl.revision_id = irevision_tbl.revision_id 
           WHERE revision = (SELECT MAX(revision) FROM imaster_tbl WHERE drawing_part_number = drawing_part_number) 

-martin

+3

Этот вопрос не показать какие-либо исследования. Очень важно сделать домашнее задание **. Расскажите нам, что вы нашли, и *** почему *** это не соответствовало вашим потребностям. Это демонстрирует, что вы потратили время, чтобы попытаться помочь себе, это избавляет нас от повторения очевидных ответов и, прежде всего, помогает вам получить более конкретный и релевантный ответ. [FAQ] (http://stackoverflow.com/questions/how-to-ask). –

+0

Также, пожалуйста, найдите минутку, чтобы сначала найти архивы. Например, если вы выполнили поиск в ['[mysql], получите последнюю запись'] (http://stackoverflow.com/search?q= [mysql] + получить + последняя + запись), есть куча существующих потоков которые отвечают на этот вопрос. – Leigh

ответ

0

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

select * from table t1 where revision = (select max(revision) from table t2 where t2.filename = t1.filename)

Вы также можете написать его с помощью ANY, ALL , EXISTS или NOT EXISTS операторов, если вы предпочитаете делать это по-другому.

+0

Большое спасибо за ваш быстрый ответ. Я попробую, и он даст вам ответ позже. Еще раз спасибо .. :) – ChocoMartin

+0

Patashu Я уже пробовал вашу идею, но она показывает только максимальную ревизию. в моем случае он отображает только все записи с самой высокой версией и игнорирует всю запись, только если последняя версия 2 является последней. – ChocoMartin

+0

@ChocoMartin Если вы имеете в виду «он показывает только строки с версией 3, которая является самой большой в таблице», вы не реализовали тот же запрос, о котором я писал в своем ответе. Обратите внимание, что я использую зависимый подзапрос, например. он рассматривает максимальную ревизию только строк того же имени файла, что и внешний запрос. Так что для имен файлов, где максимальная ревизия равна 2, она будет находить 2, если это 3 3 и т. Д. – Patashu

0

Сначала создайте подзапрос с ключом и максимальной ревизии, а затем присоединиться на нее, чтобы получить остальную часть записи:

SELECT 
    tablename.* 
FROM 
    tablename 
    INNER JOIN (
    SELECT 
     filename, MAX(revision) AS max_revision 
    FROM 
     tablename 
    GROUP BY 
     filename 
) AS max_revisions 
    ON tablename.filename = max_revisions.tablename 
    AND tablename.revision = max_revisions.max_revision 
+0

Спасибо за ваш ответ, но я всегда получал эту ошибку "# 1054 - Неизвестный столбец 'max_revision.version' в 'on clause'" – ChocoMartin

+0

Я только использование 1 таблица сэр .. таблица name: версия – ChocoMartin

-1

Просто простой и чистый раствор

SELECT * FROM table WHERE id!='' ORDER BY revision DESC LIMIT 0,3 
+0

Что делает * нет * возвращаем правильный результат. – Leigh