Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Lepszy sposób wyszukiwania tagów w tabeli mysql

Kiedy element A może być powiązany z wieloma elementami B, a element B może być powiązany z wieloma elementami A. Nazywa się to Wiele do wielu relacji

Dane z tymi relacjami powinny być przechowywane w oddzielnej tabeli i łączone tylko na zapytanie.

Przykład

Tabela 1

| product_uid | price | amount |
|      1      | 12000 |  3000  |
|      2      | 30000 |   600  |

Tabela 2

| tag_uid | tag_value |
|    1    |   tag_01  |
|    2    |   tag_02  |
|    3    |   tag_03  |
|    4    |   tag_04  |

Następnie używamy tabeli sprzężeń, aby je powiązać

Tabela 3

| entry_uid | product_uid | tag_uid |
|    1      |     1       |     3   |
|    2      |     1       |     4   |
|    3      |     2       |     1   |
|    4      |     2       |     2   |
|    5      |     4       |     2   |

Zapytanie będzie (jeśli chcesz wybrać jeden element i tag)

SELECT t1.*, t2.tag_value 
FROM Table1 as t1,
JOIN Table3 as join_table ON t1.product_uid = join_table.product_uid
JOIN Table2 as t2 ON t2.tag_uid = join_table.tag_uid
WHERE t1.product_uid = 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. xampp mysql Nie udało się zainicjować struktur wielorzędowych

  2. MySQL:unikalne pole musi być indeksem?

  3. Tworzenie tabeli nie powiodło się, a ograniczenie klucza obcego jest niepoprawnie utworzone

  4. SELECT, który zwraca listę wartości nie występujących w żadnym wierszu

  5. Zmień separator dziesiętny w MySQL