Ho 3 tabelle mysql (animale, categoria e animale_2_categoria). Ogni animale può avere categorie 0-n (ad esempio pesce, animale domestico, insetto, carnivoro, "può volare", ecc.).Mysql ordinamento valori concatenati
Tabella "animale" (id, nome)
1, dog
2, cat
3, bee
...
tabella "categorie" (id, nome)
1, pet
2, insect
3, mammal
4, fish
5, can fly
...
Tabella "animal_2_category" (animal_id, category_id)
1, 1
1, 3
2, 1
2, 3
3, 2
3, 5
...
Ciò di cui ho bisogno ora è un elenco di tutte le combinazioni di categorie. La seguente query funziona:
SELECT CONCAT_WS("-", x.name, c.name)
FROM animal_2_category a2c1
JOIN animal_2_category a2c2 ON a2c1.animal_id = a2c2.animal_id
JOIN category c ON c.id = a2c2.category_id´
JOIN categories x
GROUP BY a2c2.category_id
Questa query wil restituire i seguenti:
- pet-mammifero
- mammifero-pet
- insetti possono volare
Il problema con questo, ricevo voci pubblicitarie "pet-mammal" e "mammal-pet". Come posso modificare la query, per ottenere solo uno di loro, per esempio:
- pet-mammifero
- insetti possono volare
Bellissima domanda –
Non c'è bisogno per concatenare questi dati. In realtà, per approssimazione approssimativa, non c'è alcun problema in SQL per il quale CONCAT o GROUP_CONCAT devono essere parte della risposta. – Strawberry
Basta aggiungere un requisito che l'ID di un risultato deve essere inferiore all'ID dell'altro risultato. – Strawberry