Autor Zpráva
Rada99
Profil *
Zdravím,
mohl by mi někdo poradit jakou cestou bych se měl vydat když potřebuji vyřešit tento úkol:
kombinace 2 a více produktů s nejvyšší mírou společného výskytu v objednávkách
vzorové data vypadají takto

$orderProds = [];
$orderProds[0] = [['id' => 1, 'name' => 'kompresor'], ['id' => 2, 'name' => 'hadice']];
$orderProds[1] = [['id' => 3, 'name' => 'spony'], ['id' => 2, 'name' => 'hadice']];
$orderProds[2] = [['id' => 4, 'name' => 'kameny'], ['id' => 5, 'name' => 'rostliny']];
$orderProds[3] = [['id' => 4, 'name' => 'kameny'], ['id' => 5, 'name' => 'rostliny'], ['id' => 1, 'name' => 'kompresor'], ['id' => 2, 'name' => 'hadice']];
$orderProds[4] = [['id' => 3, 'name' => 'spony'], ['id' => 4, 'name' => 'kameny'], ['id' => 5, 'name' => 'rostliny'], ['id' => 1, 'name' => 'kompresor'], ['id' => 2, 'name' => 'hadice']];
$orderProds[5] = [['id' => 1, 'name' => 'kompresor'], ['id' => 3, 'name' => 'spony']];
$orderProds[6] = [['id' => 2, 'name' => 'hadice'], ['id' => 3, 'name' => 'spony']];
$orderProds[7] = [['id' => 2, 'name' => 'hadice']];
$orderProds[8] = [['id' => 1, 'name' => 'kompresor']];
$orderProds[9] = [ ['id' => 3, 'name' => 'spony']];
$orderProds[10] = [['id' => 2, 'name' => 'hadice']];

napadlo mě že bych si uložil kombinace do pole a pak udělal permutaci, ale nejsem si jisty

děkuji za každou snahu :)
Kajman
Profil
A nemáte data v databázi, že by se udělal sql dotaz? Nebo to je jen programátorské cvičení?
Rada99
Profil *
Právě to je už vypsané SQL dotaz mi přišel zbytečný... Přes SQL mě vůbec nenapadlo to řešit přijde mi to složité
Kajman
Profil
Pro dva produkty by to bylo něco takového
SELECT p1.id_produktu,
       p2.id_produktu,
       Count(*) radku
FROM   objednavky_polozky p1
       JOIN objednavky_polozky p2
         ON p1.id_objednavky = p2.id_objednavky
            AND p2.id_produktu > p1.id_produktu
GROUP  BY p1.id_produktu,
          p2.id_produktu
ORDER  BY Count(*) DESC 

Výsledek lze ještě několikrát joinount na číselník produktů pro získání názvu (pro každý alias položek, vlastní alias číselníku).

Pro kombinaci tří produktů by se přidal podobně join s aliasem p3.
Rada99
Profil *
Wow děkuji vyzkouším to... Myslel jsem, přes db by to nešlo
Diky

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0