Двойные данные MySQL JOIN - PullRequest
       3

Двойные данные MySQL JOIN

0 голосов
/ 02 октября 2018

У меня есть три структуры таблиц в MySQL, например:

+-----------------------+
| Tables_in_resort_wear |
+-----------------------+
| Category              |
| Categorysub           |
| Items                 |
+-----------------------+
  1. Категория таблицы:
+-------------+------------------+---------------+
| ID_Category | Name_Category    | Rank_Category |
+-------------+------------------+---------------+
|         101 | resort wear bali |             1 |
|         102 | bali clothing    |             1 |
|         103 | plus size resort |             3 |
|         104 | bali wholesale   |             4 |
|         105 | bali dress       |             5 |
|         106 | bali caftan      |             6 |
+-------------+------------------+---------------+
Таблица категорий
+----------------+-------------+------------------------+------------------+
| ID_Categorysub | ID_Category | Name_Categorysub       | Rank_Categorysub |
+----------------+-------------+------------------------+------------------+
|            630 |         103 | plus size resortwear1  |                1 |
|            625 |         101 | resort wear bali 1     |                1 |
|            626 |         101 | resort wear bali 2     |                2 |
|            627 |         102 | bali clothing 1        |                1 |
|            628 |         102 | bali clothing 2        |                2 |
|            629 |         103 | plus size resortwear2  |                2 |
|            631 |         104 | bali wholesale1        |                1 |
|            632 |         104 | bali wholesale2        |                2 |
|            633 |         105 | bali dress 1           |                1 |
|            634 |         105 | bali dress 2           |                2 |
|            635 |         106 | bali caftan 1          |                1 |
|            636 |         106 | balicaftan 2           |                2 |
+----------------+-------------+------------------------+------------------+
Элементы таблицы
+----------+-------------+----------------+----------------------+----------------------------------------+
| ID_Items | ID_Category | ID_Categorysub | Code_Items           | Name_Items                             |
+----------+-------------+----------------+----------------------+----------------------------------------+
|     2519 |         101 |            625 | jm4828 long kaftan   | long kaftan resort wear dress          |
|     2520 |         101 |            625 | jm4828 long kaftan   | juwita moon long kaftan                |
|     2521 |         101 |            625 | jm4828 long dress    | jm4828 long tropical resort wear dress |
|     2522 |         101 |            625 | jm4828 resort wear   | jm4828 juwita moon bali tropical dress |
|     2523 |         101 |            626 | jm4828 long kaftan   | jm4828 long kaftan dress bali          |
|     2524 |         101 |            626 | jm4828 kaftan bali   | jm4828 women kaftan bali design        |
|     2525 |         101 |            626 | jm4828 bali kaftan   | jm4828 juwita moon bali kaftan design  |
|     2526 |         101 |            626 | jm4828 bali resortwe | jm4828 bali resort wear long dress     |
|     2527 |         102 |            627 | jm44dm bali women    | jm44dm bali resort wear long dress     |
|     2528 |         102 |            627 | jm44dm bali women    | jm44dm resort wear dress bali          |
|     2529 |         102 |            627 | jm44dm bali dress    | jm44dm bali long dress design          |
|     2530 |         102 |            627 | jm44dm bali dress    | jm44dm women bali dress                |
|     2531 |         102 |            628 | jm44dm bali dress    | jm44dm women long dress bali design    |
|     2532 |         102 |            628 | jm44dm bali longdres | jm44dm bali long dress design          |
|     2533 |         102 |            628 | jm44dm resort wear   | jm44dm resort wear long dress          |
|     2534 |         102 |            628 | jm44dm bali caftan   | jm44dm bali caftan                     |
|     2535 |         103 |            630 | jm18 plus size bali  | juwitamoon women plus size             |
|     2536 |         103 |            630 | jm18 plus size bali  | juwita moon women plus sizes bali      |
|     2537 |         103 |            630 | jm7002 bali plus siz | women plus size resort wear bali       |
|     2538 |         103 |            630 | jm7002 plus size bal | best plus size caftan bali             |
|     2539 |         103 |            629 | jm1333 bali plus siz | juwita moon bali plus size shirt dress |
|     2540 |         103 |            629 | jm44dm plus size     | juwita moon plus size long dress       |
|     2541 |         103 |            629 | jm18 plus size bali  | made in bali women plus size caftan    |
|     2542 |         103 |            629 | jm7002 plus size bal | juwita moon plus size women caftan     |
+----------+-------------+----------------+----------------------+----------------------------------------+

Я хочу показать некоторые данные из этих 3 таблиц, для этого я использую JOIN.

Это мой запрос:

SELECT items.id_items, 
       items.name_items, 
       category.name_category, 
       categorysub.id_categorysub, 
       categorysub.name_categorysub 
FROM   category 
       JOIN items 
         ON category.id_category = items.id_category 
       JOIN categorysub 
         ON category.id_category = categorysub.id_category 
LIMIT  8 

Но результат, показывающий двойные данные в ID_Items, подобен следующему:

+----------+----------------------------------------+------------------+----------------+--------------------+
| ID_Items | Name_Items                             | Name_Category    | ID_Categorysub | Name_Categorysub   |
+----------+----------------------------------------+------------------+----------------+--------------------+
|     2519 | long kaftan resort wear dress          | resort wear bali |            625 | resort wear bali 1 |
|     2519 | long kaftan resort wear dress          | resort wear bali |            626 | resort wear bali 2 |
|     2520 | juwita moon long kaftan                | resort wear bali |            625 | resort wear bali 1 |
|     2520 | juwita moon long kaftan                | resort wear bali |            626 | resort wear bali 2 |
|     2521 | jm4828 long tropical resort wear dress | resort wear bali |            625 | resort wear bali 1 |
|     2521 | jm4828 long tropical resort wear dress | resort wear bali |            626 | resort wear bali 2 |
|     2522 | jm4828 juwita moon bali tropical dress | resort wear bali |            625 | resort wear bali 1 |
|     2522 | jm4828 juwita moon bali tropical dress | resort wear bali |            626 | resort wear bali 2 |
+----------+----------------------------------------+------------------+----------------+--------------------+

Я хочу показать некоторые подобные данные, но без двойных данных в ID_Items.Я пробовал с DISTINCT, и я получаю те же данные, как указано выше.Как лучше всего в моем случае?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Сначала вы присоединитесь к category и categorysub, затем вы можете присоединиться к items с обоими.

SELECT items.id_items, 
       items.name_items, 
       category.name_category, 
       categorysub.id_categorysub, 
       categorysub.name_categorysub 
FROM   category 
       JOIN categorysub 
         ON category.id_category = categorysub.id_category 
       JOIN items 
         ON category.id_category = items.id_category 
        AND categorysub.ID_Categorysub = items.ID_Categorysub 
LIMIT  8 

Но это в тех случаях, когда у вас есть составной первичный ключ.

Для ваших данных я предполагаю, что ID_Categorysub уникален, так что на самом деле вам нужно только:

       JOIN items 
         ON categorysub.ID_Categorysub = items.ID_Categorysub 
0 голосов
/ 02 октября 2018

попробуйте использовать группу по

SELECT items.id_items, 
       items.name_items, 
       category.name_category, 
       categorysub.id_categorysub, 
       categorysub.name_categorysub 
FROM   category 
       JOIN items 
         ON category.id_category = items.id_category 
       JOIN categorysub 
         ON category.id_category = categorysub.id_category 
GROUP  BY id_items 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...