OK, c'est parti. Je suis en train de faire une vue qui montre ceci:MySQL - Obtenir des lignes distinctes dans une vue
+---------+---------+-------+--------+------------+---------------------+---------------+-------------------+-------------+
| post_id | status | title | body | ip_address | time_stamp | category_name | sub_category_name | post_type |
+---------+---------+-------+--------+------------+---------------------+---------------+-------------------+-------------+
| 1 | enabled | test | test 2 | | 2010-05-20 01:22:17 | For Sale | Computers | transaction |
+---------+---------+-------+--------+------------+---------------------+---------------+-------------------+-------------+
1 row in set (0.00 sec)
La requête qui a fait cela est:
SELECT post.id AS post_id,
post.status AS status,
post_data.title AS title,
post_data.body AS body,
post_data.ip_address AS ip_address,
post_data.time_stamp AS time_stamp,
post_category.name AS category_name,
post_sub_category.name AS sub_category_name,
post_category.type AS post_type
FROM post,
(
SELECT * FROM post_data WHERE post_data.post_id = post_id ORDER BY post_data.post_id DESC LIMIT 1
) AS post_data,
post_sub_category,
post_category
WHERE
post.sub_category_id = post_sub_category.id AND
post_sub_category.category_id = post_category.id
Mais, car il a une requête imbriquée, je ne peux pas l'utiliser comme vue . À l'heure actuelle la meilleure requête que je peux penser qui fonctionne comme une vue est le suivant:
SELECT
post.id AS post_id,
post.status AS status,
post_data.title AS title,
post_data.body AS body,
post_data.ip_address AS ip_address,
post_data.time_stamp AS time_stamp,
post_category.name AS category_name,
post_sub_category.name AS sub_category_name,
post_category.type AS post_type
FROM post,
post_data,
post_sub_category,
post_category
WHERE
post.sub_category_id = post_sub_category.id AND
post_sub_category.category_id = post_category.id
ORDER BY post_data.id DESC
Mais que tout retourne:
+---------+---------+-------+-----------+----------------+---------------------+---------------+-------------------+-------------+
| post_id | status | title | body | ip_address | time_stamp | category_name | sub_category_name | post_type |
+---------+---------+-------+-----------+----------------+---------------------+---------------+-------------------+-------------+
| 1 | enabled | test | test 2 | | 2010-05-20 01:22:17 | For Sale | Computers | transaction |
| 1 | enabled | TEST | TEST BODY | 192.168.10.155 | 2010-05-19 23:09:15 | For Sale | Computers | transaction |
+---------+---------+-------+-----------+----------------+---------------------+---------------+-------------------+-------------+
2 rows in set (0.00 sec)
Je ne veux qu'une seule ligne par post_id, et je veux que ce soit la le plus récent. Est-ce que quelqu'un a des suggestions? J'utilise des vues pour essayer de rendre la vie plus facile quand il s'agit de traiter des choses telles que les suppressions logicielles et autres, et aussi, théoriquement, de faire des requêtes sur les données que je veux plus facilement à long terme.
Merci beaucoup d'avance!