|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Спасибо. Стало лучше. Поле в запросе итоговом уже есть. Но оно пока пустое, предполагаю, что там Null. SELECT SC.*,TW.NAIM AS NTOW,TW.CENA_ZAK AS CENA_ZAK,VYD.KOLVYD FROM SCHETA SC ; LEFT JOIN TOWAR TW ON SC.KODTOW=TW.KODTOW ; LEFT JOIN (SELECT BB.KODTOW,SUM(BB.KOLVO) AS KOLVYD,AA.KODSCE FROM DOKUMNAK AA,NAKLAD BB GROUP BY BB.KODTOW,AA.KODSCE) VYD ON SC.KODTOW = VYD.KODTOW AND SC.KODDOK=VYD.KODSCE WHERE SC.KODDOK=?M_KODSCE Что не так? Естественно накладные есть и позиции в них тоже есть. Почему полученный подзапрос не возвращает количество? Я бы с радостью почитал, о том как писать такие запросы, но даже не могу найти примера подобного. Ваши примеры мне сильно помогают: с Left Join - уже нет проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2018, 10:19 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Dima TMaestroEv, Счет один или много? Если один, как в примере выше 21734842 , то Код: sql 1. 2. 3. 4. 5.
Если много, то давай структуру таблиц, можно только используемые поля (по которым связи и данные, участвующие в расчетах). PS Читай книжки. Спасибо. То есть подселект - может быть как обычный селект? Вот такой синтаксис мне понятен, но дает ошибку. Что не так? Можно же внутри без Join? 18 лет в фоксе без джин обходился :( ... LEFT JOIN (SELECT SUM(BB.KOLVO) AS KOLVYD,BB.KODTOW FROM DOKUMNAK AA,NAKLAD BB GROUP BY KODTOW WHERE AA.KODSCE=?M_KODSCE AND AA.KOD=BB.KODDOK) VYD ON SC.KODTOW = VYD.KODTOW WHERE SC.KODDOK=?M_KODSCE... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2018, 10:31 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Ты бы код форматировал прежде чем сюда постить Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
В выделенной строке join надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2018, 10:34 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
MaestroEvМожно же внутри без Join? 18 лет в фоксе без джин обходился :( Можно, но не нужно. Читать такой запрос неудобно. С join понятно где условие связи таблиц, а где условия отбора. Если все упихать во where то получается каша, особенно если таблиц намного больше двух. Лучше привыкай к join. Фокс join тоже понимает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2018, 10:39 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
MaestroEvТо есть подселект - может быть как обычный селект? Вот такой синтаксис мне понятен, но дает ошибку. Что не так? Да, подселект можно запустить без внешнего, если не используются поля внешнего. Код: sql 1. 2. 3. 4.
Сначала пишется WHERE а потом GROUP BY. Фокс такое пропустит, а MySQL ругнется. В остальном вроде правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2018, 10:49 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Dima TMaestroEvМожно же внутри без Join? 18 лет в фоксе без джин обходился :( Можно, но не нужно. Читать такой запрос неудобно. С join понятно где условие связи таблиц, а где условия отбора. Если все упихать во where то получается каша, особенно если таблиц намного больше двух. Лучше привыкай к join. Фокс join тоже понимает. Согласен. Так удобнее читать. Теперь уже в MySQL придется все писать как надо. Дает ошибку. Что не так? Без Where в подзапросе - виснет насмерть. ...LEFT JOIN (SELECT SUM(BB.KOLVO) AS KOLVYD,BB.KODTOW,AA.KODSCE FROM DOKUMNAK AA JOIN NAKLAD BB ON AA.KOD=BB.KODDOK GROUP BY BB.KODTOW,AA.KODSCE WHERE AA.KODSCE=?M_KODSCE) VYD ON SC.KODTOW = VYD.KODTOW AND SC.KODDOK=VYD.KODSCE WHERE SC.KODDOK=?M_KODSCE... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2018, 10:52 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Dima TMaestroEvТо есть подселект - может быть как обычный селект? Вот такой синтаксис мне понятен, но дает ошибку. Что не так? Да, подселект можно запустить без внешнего, если не используются поля внешнего. Код: sql 1. 2. 3. 4.
Сначала пишется WHERE а потом GROUP BY. Фокс такое пропустит, а MySQL ругнется. В остальном вроде правильно. Огромное спасибо. Значит справлюсь. Отдельно протестирую подселект. А вообще в подселекте в итоговом селекте использовать поля внешнего можно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2018, 11:20 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
MaestroEvА вообще в подселекте в итоговом селекте использовать поля внешнего можно? Можно, но нежелательно. В этом случае для каждой записи внешнего запроса будет выполнен отдельный подзапрос. Т.е. подзапрос отработает много раз и в результате получим тормоз. Хотя возможно оптимизатор найдет более удачный план выполнения запроса и тормозов не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2018, 12:44 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Спасибо. Очередной вопрос. Они усложняются. :) Таблица Naklad ссылается полем kodsce на таблицу Schet в которой есть поле kodkli - ссылка на таблицу Klient. Мне надо выбрать накладные и в них показать имя клиента, ссылка на которого есть только в счете. Пример такого синтаксиса покажите, плиз? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2018, 07:08 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4.
Прочтите что нибудь на эту тему ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2018, 07:47 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
С новым годом! Приветствую всех. Еще один вид селектов используемых мной в Фоксе не могу перевести на язык MySql. Надо определить если ли заказ этого товара в этот день? То есть выбрать записи из таблицы-шапки(DOKUMZAP и таблицы-позиции(ZAP) те, у которых в шапке дата нужная, а позициях есть товар нужный. Делал на Фоксе так: ********************* PARAMETERS M.SYSDAT,M.KODTOW ******************** SELECT AA.KOD,AA.NOMER,AA.DATA,BB.KOLVO,BB.CENA,BB.KODTOW,AA.DOPOL FROM DOKUMZAP AA,ZAK BB ; WHERE AA.DATA=M.SYSDAT AND AA.KOD=BB.KODDOK AND BB.KODTOW=M.KODTOW INTO CURS ExistZAP ******************** Понимаю, что надо делать Join, но как бы какую вязать к какой Шапку к позициям или позиции к шапке? Нет уверенности. Помогите. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2019, 07:15 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Я же это уже писал 21714529 Тут обычный join Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2019, 07:20 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Спасибо. То есть в JOIN нет особой разницы какую таблицу к какой вязать? Это я себе лишнего накрутил? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2019, 07:40 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
MaestroEvСпасибо. То есть в JOIN нет особой разницы какую таблицу к какой вязать? Если речь о том что "AA join BB" или "BB join AA", то без разницы. Оба варианта равнозначны. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2019, 07:48 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Приветствую. Как получить доп поля заданного размера в SELECT? Select 00 as SOST,000.00 as PROC ... в Фоксе - получим поле числовое SOST длиной 2 и числовое поле PROC длиной 6 с дробной частью 2 . Как это сделать в MySql ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2019, 10:00 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
MaestroEv, а что, синтаксис MySQL лучше всего знают фоксовики? Может таки в профильном форуме спросить? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2019, 10:04 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Спасибо. Стал разбираться с вопросом экранирования. C программы надо отправить данные с записи на Фоксе в MySQL В проге есть уникальные Коды 16тиричные полученные Gen_id() .. В кодах могут быть любые символы. :( В фоксе было insert from memvar и Gather и не надо было думать об экранировании. Теперь надо как-то их засунуть в MySql Есть модуль - который генерит строку на синтаксисе MySql. Типа Insert into basa () values () . Тут нужно указывать значения переменных явно, как то экранируя кавычки и управляющие символы.. Как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2019, 08:04 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Гуглить не пробовал? экранирование кавычек mysql ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2019, 08:09 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Ты же уже решил эту проблему полгода назад 21725055 . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2019, 08:13 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
Dima TТы же уже решил эту проблему полгода назад 21725055 . Думал, что решил.. M.str = STRTRAN(M.str, CHR(0), '\x00') M.str = STRTRAN(M.str, CHR(26), '\x1A') вот это не работает.. в коды вставляются эти \X00 как есть. Кавычки отрабатываются верно. Пока убрал эти строки совсем, но сомнения остались. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2019, 05:43 |
|
Правильная работа с MySQL
|
|||
---|---|---|---|
#18+
MaestroEvDima TТы же уже решил эту проблему полгода назад 21725055 . Думал, что решил.. M.str = STRTRAN(M.str, CHR(0), '\x00') M.str = STRTRAN(M.str, CHR(26), '\x1A') вот это не работает.. в коды вставляются эти \X00 как есть. А с чего бы им работать? Документацию по поводу правильного способа задания значения 16-ричным кодом не пробовали посмотреть? Да хотя бы в командном окне Код: sql 1.
не пробовали? Вы откуда такую нотацию взяли? Чем вам Chr(0) и Chr(10) не понравились? Тем более, что во втором аргументе STRTRAN() они вроде как пригодились, а в третьем уже всё, не катят? А зачем в первой строке CHR(0) меняется на самого же себя? Или для вас CHR(0) и то, что вы пытались закодировать через '\x00', не одно и то же? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2019, 09:07 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1581664]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 155ms |
0 / 0 |