Nahrazeni foreach konstrukce SQL rubrika: Databáze: SQL

3 jirka_doubek
položil/-a 28.7.2015

Ahoj :) V MySQL mam tabulku users, answers, questions. Uzivatel odpovida ANO/NE (boolean) na serii otazek, ktera jsou dana pro casove obdobi. Otazek je vetsi mnozstvi a pocet je variabilni pro kazdy casovy usek. Vystup za jednotliva casova obdobi potrebuji vyexportovat do vicerozmerneho pole v PHP. Zatim to resim tak, ze projedu vsechny otazky v danem case, pak projedu vsechny odpovedi, v nich projedu uzivatele a vytvorim pole, ktere ma nasledujici strukturu:

$rows = [
   user_id => [
      name => 'Name',
      answers => [
         1 => 0
         2 => 1
         3 => 1
         ...
      ]
   ]
];

Pro kazdou otazku odpovidaji jini uzivatele. Vytvarim ale podle me moc SQL dotazu, tim prochazenim v PHP kodu, myslim, ze by se to dalo vyrazne zjednodusit. Nemel by nekdo, prosim, nastrel? Mozna, ze by slo vyuzit GROUP CONCAT, ktery by mi ulozil do radku jednotlive odpovedi do jednoho sloupce a s tim bych pak umel pracovat, ale po hodine laborovani nemuzu prijit na to, jak presne. S tim souvisi i druha cast dotazu, rad bych konecne pronikl do SQL, ale nemuzu najit nejaky pekny, aktualni tutorial ani v EN. Predem diky :)

Komentáře

  • coolmip : Skus poslat strukturu tabuliek A mozno ti niekto napise spravne riesenie. Bez tej struktury sa tu budeme len hadat aky driver nato pouzit co s vysledkom nema skoro nic spolocne.... 29.7.2015
odkaz
12 Kit
odpověděl/-a 28.7.2015

Ještě mi tam chybí tabulka user_question, ve které bude seznam otázek, na které má uživatel odpovídat a ve které budou uvedeny i jeho odpovědi a případně body.

Netuším, k čemu bych použil to pole v PHP.

Tutoriál nemusí být úplně aktuální, jazyk SQL se téměř nemění. Namátkou jsem našel http://www.tutorialspoint.com/mysql/ , jen je dobré v PHP místo MySQLi použít modernější PDO.

Komentáře

  • jirka_doubek : PDO používám, vlastně ani tak nejde o jazyk PHP, ale o konstrukci SQL dotazu, který můžu potom libovolně zpracovat, díky za tutoriál, mám pocit, že SQL je prostě mimo moje chápaní :) hlavně ty věci, které nějak procedurálně nechápu, jako kombinace JOINů a dalších funkcí jazyků. 28.7.2015
  • Kit : SQL je jazyk, ve kterém neříkáš, jak má databáze něco dělat, ale jen co má udělat. To nejsou procedurální záležitosti, ale deklarativní. 28.7.2015

Pro zobrazení všech 2 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.