Wyszukiwanie wszystkich substancji należacej do danej grupy

0

Moje zadanie bardziej podchodzi pod mysq, ale też pod php więc pisze tutaj otóż z bazy wybieram jedno id i badam jaki to jest produkt i wybieram ile produktów ma takie substancje np metafen i apap mają paracetamo no i ta jedna substancja wchodzi w skład w niestereidowe leki przecizapalen i teraz jak przykładowo wezmę jeden lek i mam problem, żeby wyświetlić liczbę substancji, których zawiera dana grupa.

Np jest lek apap on zawiera paractamol więc uchwytuje wszystkie leki zawierające paracetamol i potem wszsytkie leki zawierające paracetamol potem bada grupę w której jst paracetamol i wybiera wszystkie produktu które są w niesteroidowych lekach przecizapalnych.

Tabela 1 produktu
id
nazwa
Tabela 2 substancje
id
nazwa
tabela 3 przekierowanie_substancji
id_substancji
id_produktu
tabela 4
przekierowanie_grup
id_grupy
id_substancji
tabela5
grupy
id nazwa

na razie mam to zrobione

  private function oblicz_srednia_dla_calych_produktow_grup() {
     $tablica_substancji = array();
     $wspolne = new \App\Http\Controllers\wspolne();
     $id_produkt = DB::select("select id_produktu from spozycie where id = " . Input::get('id') . "");
        foreach ($id_produkt as $id_produkt2) {}
     $produkt = DB::select("select nazwa,ile_procent,id from produkty where id = '" . $id_produkt2->id_produktu ."'");
       foreach ($produkt as $produkt2) {}
     $substancja = DB::select("select produkty.id,przekierowanie_substancji.id_substancji from produkty inner join przekierowanie_substancji on przekierowanie_substancji.id_produktu = produkty.id where id_produktu =" . $id_produkt2->id_produktu . "");
     foreach ($substancja as $substancja2) {}
     $i = 0;
     //print $substancja2->id_substancji;
     $substancja3 = DB::select("select distinct id_substancji as id_substancji,id_produktu from przekierowanie_substancji where id_substancji = '".   $substancja2->id_substancji ."'");
      //var_dump($substancja3);
    
     foreach ($substancja3 as $substancja4) {
    
              $grupa = DB::select("select distinct substancje.id as produkt,przekierowanie_grup.id_grupy as grupa from substancje inner join przekierowanie_grup on przekierowanie_grup.id_substancji = substancje.id where przekierowanie_grup.id_substancji =" . $substancja2->id_substancji . "");
      
          var_dump($grupa);
         foreach ($grupa as $grupa2) {
              //print  $grupa2->grupa . "<br>";
            //w tym zapytaniu musi być błąd.
	    $grupa3 = DB::select("select distinct produkty.id as produkt from produkty inner join przekierowanie_substancji on przekierowanie_substancji.id_produktu = produkty.id inner join przekierowanie_grup on przekierowanie_grup.id_grupy = " . $grupa2->grupa . "  where przekierowanie_substancji.id_produktu =  " . $grupa2->produkt  . " and produkty.id = " . $id_produkt2->id_produktu . "");
	     //print 
	      print $grupa2->produkt . "<br>";
	          foreach ($grupa3 as $grupa4) {
	             $tablica_substancji[$i] = $grupa4->produkt;
	                 print $i . " " . $tablica_substancji[$i] . "<br>";
	               $i++;
	          }
          }
    
     }
    //var_dump($tablica_substancji);
  }
0

Po pierwsze primo weź to ładnie sformatuj - porób wcięcia, bo się źle czyta.
Po drugie primo, na pewno masz błąd (albo błąd logiczny) w foreach ($substancja3 as $substancja4) { - nigdzie wewnątrz nie używasz $substancja4, więc za każdym razem wykonują się takie same zapytania.

0

Już mi się udało zrobić wynik jest taki.

private function oblicz_srednia_dla_calych_produktow_grup() {
    $tablica_substancji = array();
    $wspolne = new \App\Http\Controllers\wspolne();
    //to służy do wyciągnięcia id produktu
    $id_produkt = DB::select("select id_produktu from spozycie where id = " . Input::get('id') . "");
    foreach ($id_produkt as $id_produkt2) {}
    //to służy do wyciągnięcia id substancji
    $substancja = DB::select("select produkty.id,przekierowanie_substancji.id_substancji from produkty inner join przekierowanie_substancji on przekierowanie_substancji.id_produktu = produkty.id where id_produktu =" . $id_produkt2->id_produktu . "");
    foreach ($substancja as $substancja2) {}
    $i = 0;
    //print $substancja2->id_substancji;
    
    $grupa = DB::select("select  substancje.id as produkt,przekierowanie_grup.id_grupy as grupa from substancje inner join przekierowanie_grup on przekierowanie_grup.id_substancji = substancje.id where przekierowanie_grup.id_substancji =" . $substancja2->id_substancji . "");
    foreach ($grupa as $grupa3) {}
    $substancja3 = DB::select("select  produkty.id as produkt,przekierowanie_grup.id_grupy as id_grupy,przekierowanie_substancji.id_produktu as pro from produkty inner join przekierowanie_substancji on przekierowanie_substancji.id_produktu = produkty.id inner join przekierowanie_grup on przekierowanie_grup.id_grupy = " . $grupa3->grupa . "  where przekierowanie_substancji.id_substancji =  " . $grupa3->produkt  . " and produkty.id = " . $id_produkt2->id_produktu . "");
    //var_dump($substancja3);
        
    foreach ($substancja3 as $substancja4) {
    //print "dobrze";
    
    $id_grup = DB::select("select id_substancji,id_grupy from przekierowanie_grup where id_grupy = " .  $substancja4->id_grupy . "");
    $tablica = array();

    foreach ($id_grup as $id_grup2) {
    print "dobrze";
      $id_produ = DB::select("select id_produktu from przekierowanie_substancji where id_substancji = " .  $id_grup2->id_substancji . "");
      foreach ($id_produ as $id_produ2) {
      print "dobrze";
      $tablica[$i] = $id_produ2->id_produktu;
      $i++;
      }
    }
    
    /*
      $grupa = DB::select("select distinct substancje.id as produkt,przekierowanie_grup.id_grupy as grupa from substancje inner join przekierowanie_grup on przekierowanie_grup.id_substancji = substancje.id where przekierowanie_grup.id_substancji =" . $substancja2->id_substancji . "");
      
      var_dump($grupa);
      foreach ($grupa as $grupa2) {
      //print  $grupa2->grupa . "<br>";
      
	$grupa3 = DB::select("select distinct produkty.id as produkt from produkty inner join przekierowanie_substancji on przekierowanie_substancji.id_produktu = produkty.id inner join przekierowanie_grup on przekierowanie_grup.id_grupy = " . $grupa2->grupa . "  where przekierowanie_substancji.id_produktu =  " . $grupa2->produkt  . " and produkty.id = " . $id_produkt2->id_produktu . "");
	  //print "kupa";
	  print $grupa2->produkt . "<br>";
	  foreach ($grupa3 as $grupa4) {
	  $tablica_substancji[$i] = $grupa4->produkt;
	  print $i . " " . $tablica_substancji[$i] . "<br>";
	  $i++;
	  }*/
      }
      var_dump($tablica);
    
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1