12. juni 2014 - 12:28
Der er
53 kommentarer
Mysql vis en
jeg vil gerne have vist den sidste af hver 'han_unit_id' hvor 'han_unit_type' == ' resource_temperature' så hvis tabeller ser således ud: id - name - han_unit_id - han_unit_type - time 34 - noget - 50345 - resource_temperature - 1402566736 33 - noget - 45892 - airlink_input - 1402566613 32 - noget - 37493 - resource_temperature - 1402566651 31 - noget - 50345 - resource_temperature - 1402566565 så vil jeg kun have udlæst 34 & 32
Annonceindlæg fra Infor
Hvorfor vil du ikke have 31 ud ? Forstår nok ikke problemet eller dit ønske. :o)
fordi 31 har fået en nyere verdi (34) sammen han_init_id.
Utestet, men hvad med noget ala: SELECT id, han_unit_id, MAX(time) FROM table WHERE 'han_unit_type' = 'resource_temperature' GROUP BY han_unit_id, ORDER BY time
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /volume1/web/Blue_Captain/apps/templine.php on line 19 line 5: $result_templine = mysql_query("SELECT id, han_unit_title, output_sand_time, han_unit_id, MAX(time) FROM `input_module` WHERE 'han_unit_type' = 'resource_temperature' GROUP BY han_unit_id, ORDER BY time"); line 19: while($row = mysql_fetch_array($result_templine)) { line 20: echo "['".$row['han_unit_title']."', '".$row['output_sand_time'].",\n "; line 21}
Test lige: $result = mysql_query("SELECT id, han_unit_title, output_sand_time, han_unit_id, MAX(time) FROM `input_module` WHERE 'han_unit_type' = 'resource_temperature' GROUP BY han_unit_id, ORDER BY time"); if (!$result) { die('Invalid query: ' . mysql_error()); } while($row = mysql_fetch_array($result)) { echo "['".$row['han_unit_title']."', '".$row['output_sand_time'].",\n "; }
Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ORDER BY time' at line 1
Det er et komma lige før ORDER BY.
godt set, nu virker den men sidens øvrige indhold vil ikke lade den vise åbenbart men opgaven er løst.
eller nej er ikke løst den vise et en af de rows der er inde midt i det hele
12. juni 2014 - 20:11
#10
Jeg har desværre nok taget fejl så. Vent til Arne_V kommer med svaret. :o)
12. juni 2014 - 20:34
#11
haha
12. juni 2014 - 22:26
#12
#3's svar burde virke, hvis man lige fjerner det komma der er før ORDER BY SELECT id, han_unit_id, MAX(time) FROM table WHERE han_unit_type = 'resource_temperature' GROUP BY han_unit_id ORDER BY time id han_unit_id MAX(time) 32 37493 1402566651 34 50345 1402566736
12. juni 2014 - 23:59
#13
Desvære virker det ikke de tal jeg har i min db som jeg sortere efter time passer ikke med dem der kommer ud.
13. juni 2014 - 07:51
#14
Kan du smide et dump af din db et sted, så vil jeg gerne lege lidt videre.
13. juni 2014 - 09:51
#15
13. juni 2014 - 10:17
#16
Hvad med noget ala denne: SELECT MAX(id),`han_unit_id` FROM `input_module` WHERE `han_unit_type` = 'resource_temperature' GROUP BY `han_unit_id`
13. juni 2014 - 10:46
#17
det er som om den der MAX() ikke gør helt hvad den skal ['Løs', 9.800], //104 ['Tavlen', 25.700], //102 det sidste efter // er id tænkte det var meget godt at få det med. jeg vil mene at det skal være omkring 700
13. juni 2014 - 11:04
#18
Følgende sql: SELECT MAX( id ) , `han_unit_id` FROM `input_module` WHERE `han_unit_type` = 'resource_temperature' GROUP BY `han_unit_id` Giver mig dette resultat: id: 739 han_unit_id: 565268 og id: 741 han_unit_id: 567316 Hvad er det rigtige resultat da? Og bruger du mysql eller MariaDB?
13. juni 2014 - 11:10
#19
SELECT MAX( id ) , han_unit_title, han_last_pos, id,`han_unit_id` FROM `input_module` WHERE `han_unit_type` = 'resource_temperature' GROUP BY `han_unit_id` giver stadig mig: ['Løs', 9.800], //104 ['Tavlen', 25.700], //102 dit resultat ser korrekt ud men hvorfor får jeg ikke det samme?
13. juni 2014 - 11:15
#20
Hvilken database bruger du? Og hvilken version?
13. juni 2014 - 11:21
#21
kan jeg svare på om ikke så længe er lige ved at genstarte server.
13. juni 2014 - 11:35
#22
MariaDB 5.5.34-0018 phpMyAdmin 4.1.14_0017
13. juni 2014 - 11:42
#23
Prøv lige at leg lidt med MAX. :o)
https://mariadb.com/kb/en/max/ Og se om den i sin simpleste forstand giver forventet resultat.
Prøv evt. at undlad WHERE.
13. juni 2014 - 11:52
#24
uden WHERE får jeg Warning: number_format() expects parameter 1 to be double, string given in /volume1/web/Blue_Captain/apps/templine.php on line 23 ['Venstre', ], //73 Warning: number_format() expects parameter 1 to be double, string given in /volume1/web/Blue_Captain/apps/templine.php on line 23 ['Højre', ], //69 ['Løs', 9.800], //104 ['Tavlen', 25.700], //102 Warning: number_format() expects parameter 1 to be double, string given in /volume1/web/Blue_Captain/apps/templine.php on line 23 ['Lys skab', ], //72 Men resultatet er stadig det samme.
13. juni 2014 - 11:56
#25
Kan du ikke teste direkte i phpmyadmin ? Hvad giver denne: SELECT MAX( id ) , han_unit_title, han_last_pos, id,`han_unit_id` FROM `input_module` GROUP BY `han_unit_id`
13. juni 2014 - 11:56
#26
Jeg får dette svar: MAX( id ) han_unit_title han_last_pos id han_unit_id 105 Venstre falsk 73 320092 572 Højre falsk 69 320348 739 Løs 9.8000001907349 104 565268 741 Tavlen 25.700000762939 102 567316 664 Lys skab falsk 72 58642
13. juni 2014 - 12:00
#27
ligemeget hvad jeg bruger i MAX får jeg det samme resultat.
13. juni 2014 - 12:05
#28
Så er det MariaDB der er fucked i forhold til MAX.
13. juni 2014 - 12:10
#29
['han_unit_title', han_last_pos], //id //MAX( id ) ['Løs', 9.800], //104 //763 ['Tavlen', 25.700], //102 //762 Bliver MAX så ikke brugt forkert (Skal den ikke bruges i WHERE) så passer det.
13. juni 2014 - 12:52
#30
Jeg tror du har ret MAX er rimelig fucked har lige tjekket op på en tutorial hmor der var sat et eksempel men min gør slet ikke det samme.
13. juni 2014 - 12:56
#31
Jeg tror desværre ikke jeg kan komme nærmere en løsning, beklager.
13. juni 2014 - 13:12
#32
Jeg har vist fundet denne: SELECT han_unit_title, han_last_pos, han_unit_id, max_id FROM input_module JOIN (SELECT han_unit_id, MAX(id) AS max_id from input_module group by han_unit_id) AS aggregated_table USING (han_unit_id) WHERE (id = max_id) AND han_unit_type = 'resource_temperature' Den er lidt voldsom. virker den for dig?
13. juni 2014 - 13:17
#33
Jeg får dette "svar": han_unit_title han_last_pos han_unit_id max_id Løs 25 565268 739 Tavlen 27.60000038147 567316 741
13. juni 2014 - 13:26
#34
Dit svar på den gamle var: han_unit_title han_last_pos id han_unit_id MAX( id ) Løs 9.8000001907349 104 565268 739 Tavlen 25.700000762939 102 567316 741 og som du selv ser på din gamle stemmer id og id Max ikke over ens
13. juni 2014 - 13:31
#35
han_unit_title han_last_pos id han_unit_id Løs 25 739 565268 Tavlen 27.60000038147 741 567316 er hvad jeg læser i databasen.
13. juni 2014 - 13:32
#36
Prøv at luk dette spørgsmål og opret det på ny i mysql. Måske du har mere held der, jeg er blank.
13. juni 2014 - 13:35
#37
hvis du ser på dit seneste svar og ser på hvad jeg forventede der kom ud så stemmer de over ens det vil sige at din forventning af MAX virkede ikke, men hvis den bruges på den måde jeg fandt så virker den.
13. juni 2014 - 13:37
#38
Jamen så virker nyeste vel? Og ja, kan godt være "max" kun virker på angivne felt.
13. juni 2014 - 13:46
#39
Men jeg takker mange gange for indsatsen. Men Arne_V kom ikke.
13. juni 2014 - 13:47
#40
har du foresten forstand på Linux?
13. juni 2014 - 13:50
#41
Selv tak. Linux: Lidt.
13. juni 2014 - 13:55
#42
jeg har et script /var/www/serial/denon.php køre jeg det fra terminal prompt virker det men køre jeg det fra browser sker der ikke en skid det er meningen at det skal skrive komando til den serial'e udgang
13. juni 2014 - 14:01
#43
Prøv at vis indholdet af denon.php
13. juni 2014 - 14:07
#44
<?php
include 'PhpSerial.php';
$serial = new PhpSerial;
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
$serial->sendMessage("MVUP\015");
$read = $serial->readPort();
$serial->deviceClose();
$serial->confBaudRate(9600);
?>
og PhpSerial.php kan ses her:
https://github.com/Xowap/PHP-Serial/blob/develop/src/PhpSerial.php
13. juni 2014 - 14:08
#45
den gør stort set det samme som: echo -en "MVUP\015" > /dev/ttyUSB0
13. juni 2014 - 14:13
#46
Prøv at se om der kommer "indhold" i error.log eller noget, når du kalder siden via web ?
13. juni 2014 - 14:23
#47
2014-06-12 20:43:32: (mod_fastcgi.c.2676) FastCGI-stderr: PHP Fatal error: No stty availible, unable to run. in /var/www/serial/PhpSerial.php on line 56
13. juni 2014 - 14:35
#48
køre jeg kommandoen fra prompt: # php /var/www/serial/denon.php kommer der ingen error. og det virker.
13. juni 2014 - 14:59
#49
men den skal også virke fra web browser
13. juni 2014 - 15:15
#50
Når du kører dem fra commandline, køre du den så som Root ? Jeg kunne måske tro det er noget omkring rettigheder.
13. juni 2014 - 15:29
#51
ja jeg køre fra root men har prøvet at køre : "sudo addgroup www-data dialout" det skulle meget gerne udvide rettighederne.
13. juni 2014 - 21:34
#52
15. juni 2014 - 20:11
#53
Vil du smide et svar?
Vi tilbyder markedets bedste kurser inden for webudvikling