|
|
|
| Есть сложный запрос выбора из трех таблиц данных товара, попутно названия его производителя и первой фотографии:
SELECT products.*, products.id as prod_id, products.prod_title_GR as prod_title, prod_photos.prod_id as photos_prod_id, prod_photos.photo_order, prod_photos.photo_path,
manufacturers.id as manuf_id, manufacturers.title_GR as manuf_title FROM products JOIN prod_photos ON (products.id=prod_photos.prod_id AND prod_photos.photo_order =1)JOIN
manufacturers ON products.manuf_id=manufacturers.id
|
Не ругайте, что не использую псевдонимы, мне так понятнее.
Дело в том, что когда я делаю проверочный запрос (выбираю все товары), получается разница на 5-6 товаров. Откуда? Предположила, что у каких-то товаров нет фотографий. Проверила, нашелся один такой.
Товаров, у которых не было бы id производителя, не нашлось.
Товаров, у которых не было бы фотографии с порядком 1, не нашлось.
А ведь я только по этим проверяю. Как еще можно попробовать поискать, где разница? | |
|
|
|
|
|
|
|
для: elenaki
(02.03.2014 в 17:55)
| | Используйте LEFT JOIN или RIGHT JOIN для четкого указания доминирующей таблицы | |
|
|
|
|
|
|
|
для: elenaki
(02.03.2014 в 17:55)
| | еще варианты :
1. id производителя у товара есть, а самого производителя в таблице нету.
2. фоток с порядком 1 больше одной.
первый случай убирается через LEFT JOIN.
фотки второго случая стоит убрать отдельным запросом. | |
|
|
|
|
|
|
|
для: Trianon
(03.03.2014 в 02:10)
| | 1. такого быть не может. Производителей всего 2. У всех товаров есть id производителя и
он, конечно, или 1 или 2
2. об этом подумала позже. Клиент долго заносил фотки, не заморачиваясь особо определе-
нием их порядка. Пришлось насильно все нулевые фотки сделать первыми. Тем более, что
тогда было совсем немного товаров, у которых было бы больше одной фотки. Пойду думать,
как выцепить только одну фотку.
Хотя по запросу с условиями выбирается меньше, чем по общему запросу без условий. Не
должно быть наоборот? | |
|
|
|
|
|
|
|
для: Trianon
(03.03.2014 в 02:10)
| | Ура! Нашла! Дело не в базе и не в запросе. Обратила внимание, что какие бы варианты
поиска я не выбирала, разница была в 6 товаров. А это как раз количество товаров на
странице. Надо было в запросе в LIMIT сделать -1 к номеру страницы. Всем спасибо.
Трианону особенный респект. | |
|
|
|