Tema: Re: q: MySQL ataskaitos
Autorius: Laimis
Data: 2016-04-30 00:35:42
Trolis rašė:

> Siunčiausi iš MySQL tinklalapio, rodos to, kur adrese. Ir skaičiai iš
> atminties, rodos, tie patys (versija).
>
> Tai manau, kad tas pats draiveris.

Kaip ir tikėjausi — ieškok problemų tarpinėje arba kažkur kitur:
OS: Win10 x64, Libre: 4.4.7.2, MySQL: 5.7.12, x86_64, MySQL ODBC 
Connector: 5.3.6

USE test;
CREATE TABLE `t1` (id int, fname text, lname text, date datetime, 
CONSTRAINT pk PRIMARY KEY (id));
INSERT INTO `t1` VALUES(1, 'Bond','James Bond','1970-01-01');
INSERT INTO `t1` VALUES(2,'Kandela','Mandela','1970-01-04');
INSERT INTO `t1` VALUES(3,'John','Omaha','1970-02-04');
INSERT INTO `t1` VALUES(4,'Vilius','Smilius','1970-01-02');
INSERT INTO `t1` VALUES(5,'Tomas','Atomas','1970-01-03');


Named parametrai Libre (:fname= 'Bo', :lname='Ja'):
SELECT * FROM "t1" WHERE `fname` LIKE CONCAT(:fname, '%') AND `lname` 
LIKE CONCAT(:lname, '%')

1, Bond, James Bond, 70-01-01


Join'ai Libre:
SELECT * FROM `t1` LEFT JOIN `t1` `t2` ON `t1`.id = `t2`.id

1, Bond, James Bond, 70-01-01, 1, Bond, James Bond, 70-01-01
2, Kandela, Mandela, 70-01-04, 2, Kandela, Mandela, 70-01-04
<...>

MySQL'o funkcijos (datos intervalai) Libre:
SELECT DATE_ADD(CURDATE(), INTERVAL -3 DAY)

2016-04-27

Čia turbūt realiausias kabliukas; norint, kad veiktų ši funkcija reikia 
query'iui nustatyti SQL direct (Libre mygtukas su SQL užrašu ir 
pavadinimu „Run SQL command directly“), nes kitaip parser'is susimala 
aptikęs nestandartinę sintaksę. Spėčiau, kad tokios pačios problemos su 
DATE_ADD ir pan. funkcijomis yra ir Access'e.

Reziume. Kaip ir rašiau: SQL funkcionalumas Libre yra analogiškas 
Access'ui (tai, kas veikia komandinėje SQL kliento konsolėje, veikia 
(turi veikti) tiek Libre, tiek Access'e. Todėl norėdamas pasikinkyti 
duomenis per ODBC/JDBC turi tiesiog išmokti tuo naudotis (pažinti 
naudojamos DBVS SQL'o sintaksės niuansus, parser'io subtilybes).