Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: On 30 Září 2011, 12:53:26

Název: Mysql z příkazového řádku
Přispěvatel: On 30 Září 2011, 12:53:26
Zdravím,

věděl by někdo jednodušší zápis pro komunikaci mezi shellem a mysql? Abych získal potřebná data, tak to zatím dělám takhle:

/**  SELECT id z databáze **/
mysql -uUSER -hHOST -pPASSWD -e "SELECT id FROM ...." > $FILE

/** odstranění prvního řádku, kde jsou názvy sloupců **/
sed "1 d" -i $FILE

while read line do;

  name= mysql -uUSER -hHOST -pPASSWD -e "SELECT name FROM table WHERE id=$line...." > $FILE
  event= mysql -uUSER -hHOST -pPASSWD -e "SELECT event FROM table WHERE id=$line ...." > $FILE
  notice= mysql -uUSER -hHOST -pPASSWD -e "SELECT notice FROM table WHERE id=$line ...." > $FILE

  echo "$name : $event : $notice"

done < $FILE

Syntaxe není úplně přesná, ale na ukázku to asi stačí ...prostě abych získal konkrétní sloupec, tak to musím dělat tak složitě, že ID zapisuju do souboru a z něj pak tahám co potřebuji ...funguje to tak jak by mělo, ale pokud to jde jednodušeji, byl bych rád...něco jak je v php Mysql_Fetch_Assoc, kde si pak proměnné budu tahat např: $result[name], $result[event] atd ...abych nemusel pro každý údaj dělat select..
Název: Re:Mysql z příkazového řádku
Přispěvatel: donny 30 Září 2011, 13:43:17
Viděl bych to na něco jako


mysql -uUSER -hHOST -pPASSWD -e "SELECT CONCAT_WS(' : ', t.name, t.event, t.notice) FROM table t LEFT JOIN table2 s ON s.id=t.id" > $file


Možná jsem to napsal blbě, ale kdyžtak mě jistě někdo opraví :)
Název: Re:Mysql z příkazového řádku
Přispěvatel: On 30 Září 2011, 20:23:41
No, pořád to ještě nebude úplně to pravé ...ten příklad s výpisem byl jen příklad, potřeboval bych každou proměnnou zvlášť ($name, $event, $notice)...navíc potřebuji dělat cyklus v cyklu a tam už narážím na trouble ...zkusím dát příklad v PHP co konkrétně potřebuji:

$sql = Mysql_Query("SELECT id FROM users WHERE name!=''");

while ($result = Mysql_Fetch_Assoc($sql)) {
     $id = $result["id"];
     $list = Mysql_Query ("SELECT * FROM list_event WHERE assign='$id'");
     while ($result2 = Mysql_Fetch_Assoc($list)) {

          $name = $result2["name"];
          $event = $result2["event"];
          $notice = $result2["notice"];
          $date = $result2["date"];
     }
}

....teď mě napadá, že ten cyklus tam vlastně nehraje roli, ale když už jsem si dal tu práci s napsáním, tak to tam nechám :) Prioritní pro mě jsou ty poslední proměnné ...abych měl jeden SELECT a z něj vytáhnul potřebná data.
Název: Re:Mysql z příkazového řádku
Přispěvatel: mka 01 Října 2011, 13:10:39
Nastuduj si join a čti tu druhou tabulku spojenou s tou první.