Ho una domanda circa l'uso di SQL ricorsivo in cui ho seguito la struttura della tabellaImplementazione di una query ricorsive in SQL
prodotti possono essere in più gruppi (per ragioni di chiarezza, non sto usando int)
CREATE TABLE ProductGroups(ProductName nvarchar(50), GroupName nvarchar(50))
INSERT INTO ProductGroups(ProductName, GroupName) values
('Product 1', 'Group 1'),
('Product 1', 'Group 2'),
('Product 2', 'Group 1'),
('Product 2', 'Group 6'),
('Product 3', 'Group 7'),
('Product 3', 'Group 8'),
('Product 4', 'Group 6')
+-----------+---------+
| Product | Group |
+-----------+---------+
| Product 1 | Group 1 |
| Product 1 | Group 2 |
| Product 2 | Group 1 |
| Product 2 | Group 6 |
| Product 3 | Group 7 |
| Product 3 | Group 8 |
| Product 4 | Group 6 |
+-----------+---------+
Ora la domanda è voglio scoprire tutti i relativi prodotti in modo cioè se mi passa prodotto 1 poi ho bisogno il seguente risultato
+-----------+---------+
| Product | Group |
+-----------+---------+
| Product 1 | Group 1 |
| Product 1 | Group 2 |
| Product 2 | Group 1 |
| Product 2 | Group 6 |
| Product 4 | Group 6 |
+-----------+---------+
Quindi, fondamentalmente voglio prima scoprire tutti i gruppi per il prodotto 1 e quindi per ogni gruppo voglio scoprire tutti i prodotti e così via ...
- prodotto 1 => Gruppo 1 , Gruppo 2;
- Gruppo 1 => Prodotto 1, Prodotto 2 (il Gruppo 1 e il Prodotto 1 esistono già, quindi dovrebbero essere evitati altrimenti andrebbero nel ciclo infinito );
- Gruppo 2 => Prodotto 1 (esiste già come sopra);
- prodotto 2 => Gruppo 1, Gruppo 6 (Gruppo 1 e 2 del prodotto già esistono)
- Gruppo 6 => prodotto 4
Non credo che la sintassi dello snippet sia una buona idea in questo contesto, anche se l'output che si desidera è formattato come HTML. Ero molto tentato di rimuoverlo, ma non sono sicuro di quale significato attribuisca alla sezione CSS dell'output. Penso che dovrebbe essere omesso, ma è la tua domanda. –
Suggerisco di creare tabelle ascii usando qualcosa come https://ozh.github.io/ascii-tables/ – Blorgbeard
Spiacente che sia stato per errore appena modificato, quindi mostra ora l'output corretto ... –