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
-
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..
-
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í :)
-
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.
-
Nastuduj si join a čti tu druhou tabulku spojenou s tou první.