Базы данных (SQL и др.)

Есть запрос к MySQL вида
Код:
SELECT s.*, t.xxx, t.xxx, t.xxx, COUNT(p.id) AS num 
FROM `table1` AS s
LEFT JOIN `table2` AS t ON(s.column1=t.column2)
LEFT JOIN `table3` AS p ON(s.column3=p.column4)
При этом в table3 может не быть удовлетворяющих условию строк, при этом в результате строка не появляется, а мне нужно, чтобы такая строка была с num=0
 

Сарт

Ословед
Работаю на Access 2007. Собственно такой вопрос. Допустим есть 2 поля:
Код_Страна
Код_Город
Оба элемента - поля со списком. Как сделать так, чтобы при выборе страны автоматически фильтровался список городов в поле, и показывались лишь те, которые находятся в выбранной стране?
 
Может быть вопрос не в той теме, хотя вопрос по базам. Проблема с кодировкой в базах. Пробовал и в phpmyadmin и в Navicat - создаю таблицу, любую, допустим с полем 'id' и 'text'. Заполняю поле 'text', делаю коннект к базам через php. Английский текст выводит, русский нет! Я уже почти все кодировки перепробовал, что на сайте, что в navicat и phpmyadmin. Не могу додуматься в чем еще может быть проблема? Если кто знает, помогите дурачку?)
 

krivo

Ословед
ну тут надо уточнить кодировку в настройках базы, кодировку в настройках php. может поможет все привести к общему знаменателю utf-8?
 
Создавай базы с кодировкой utf-8
В настройках мускуля (my.cnf) поставь default-character-set = utf8 в секции [mysqld]
В пыхпых скрипты добавить что-то типа
PHP:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET CHARACTER_SET_CONNECTION=utf8");
 
Может я делаю что не так, но всё сделал как мне сказал ooZe.
Вот таблица:
Код:
-- Table "testing_table" DDL

CREATE TABLE `testing_table` (
  `id` int(2) NOT NULL default '0',
  `text` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Да и на сайте вроде как кодировка utf стоит:
Код:
<meta http-equiv="[COLOR="#4169e1"]Content-Type[/COLOR]" content="[COLOR="#4169e1"]text/html[/COLOR]; charset=[COLOR="#4169e1"]utf-8[/COLOR]">
 
Есть запрос к MySQL вида
Код:
SELECT s.*, t.xxx, t.xxx, t.xxx, COUNT(p.id) AS num 
FROM `table1` AS s
LEFT JOIN `table2` AS t ON(s.column1=t.column2)
LEFT JOIN `table3` AS p ON(s.column3=p.column4)
При этом в table3 может не быть удовлетворяющих условию строк, при этом в результате строка не появляется, а мне нужно, чтобы такая строка была с num=0

если я правильно понял то вот так должно сгодиться.
Код:
SELECT s.*, t.xxx, t.xxx, t.xxx, ifnull(COUNT(p.id),0) AS num 
FROM `table1` AS s
LEFT JOIN `table2` AS t ON(s.column1=t.column2)
LEFT JOIN `table3` AS p ON(s.column3=p.column4)

2 DeMaN_74
А браузер, которым ты сайт смотришь, тебе в utf8 показывает? в меню вид поиграй с кодировками. В какой-нибудь русские буквы да должны проявится. :)
 
Вот таблица:
Код:
CREATE TABLE `testing_table` (
  `id` int(2) NOT NULL default '0',
  `text` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
уверен что id не будет больше 99? и зачем дефолтный 0? поставь auto_increment
в скриптах пхп установил кодировку соединения?

А браузер, которым ты сайт смотришь, тебе в utf8 показывает?
ага, и сам текст в utf-8? :)
 
Привет всем.
Хочу создать сайт с базой данных, чтобы вся информацию, которую я забивал в нем где нить
сохранялась, и при желании ее можно было от туда считать. Также нужен поиск по параметрам.
сам в этом мало разбираюсь поэтому ищю того кто может ее создать. Цена, сроки. 248-71-22, oknoex@mail.ru
 

Doctor Grif

Ословед
Привет всем.
Хочу создать сайт с базой данных, чтобы вся информацию, которую я забивал в нем где нить
сохранялась, и при желании ее можно было от туда считать. Также нужен поиск по параметрам.
сам в этом мало разбираюсь поэтому ищю того кто может ее создать. Цена, сроки. 248-71-22, oknoex@mail.ru
чу-щу пиши с буквой у
cms для этого существуют
 

krivo

Ословед
Подскажите пожалуйста.
Пытаюсь подсунуть MySQL CSV файл с данными.
в тех полях, где должна быть дата, но её нет, sql сразу ругается и перестает импортировать данные
я в пустые поля подсунул данные 0000-00-00 и csv файл скушался
а потом в таблице я пытаюсь эти ячейки с данными 0000-00-00 очистить и мне не дают это сделать

ERROR 1292: Incorrect date value: '' for column 'Дата явки' at row 1
SQL Statement:
UPDATE `пациенты` SET `Дата явки`='' WHERE `id`='2'

я понимаю что он хочет ячейку с датой, но у меня таблица создавалась изначально без требования к заполнению ячейки

CREATE TABLE `Пациенты` (
`Дата явки` DATE NULL );

ps.вопрос нубский наверное, я ваще филолог
 
krivo, как понимаю, у тебя имена столбцов в кириллице? Если так, то меняй на литиницу, много всякого нехорошего вылазит. Ну и вопрос - если дата нигде не используются, то почему бы вообще эту колонку не удалить? :) Как сказал Serge, для пустых значений обычно передается NULL. Вот пример, сгенерированный PhpMyAdmin:
Код:
INSERT INTO `test`.`test` (`1`, `2`) VALUES ('1', NULL);
 

krivo

Ословед
да, спасибо. NULL помогло
Mysql съел весь CSV

Только как теперь заменить все поля со значениями 0000-00-00 на реальный Null?

просто в CVS стояло значение NULL, а MySQL автоматом его перевел в 0000-00-00.
как теперь запросом заменить все эти 0000-00-00 на Null?
 
да, спасибо. NULL помогло
Mysql съел весь CSV

Только как теперь заменить все поля со значениями 0000-00-00 на реальный Null?

просто в CVS стояло значение NULL, а MySQL автоматом его перевел в 0000-00-00.
как теперь запросом заменить все эти 0000-00-00 на Null?


Код:
UPDATE table SET date = null WHERE date = '0000-00-00';
 
спасибо откликнувшимся
новый день и яндекс
подсказали
UPDATE `пациенты` SET `год рождения` = replace(`год рождения`, '1901', NULL)
WHERE `год рождения` like '1901';
код
UPDATE table SET date = null WHERE date = '0000-00-00';
пачиму то ошибку давал

Ну.. они тебе конечно и подсказали. Если расшифровать, то будет что-то типа "заменить во всех строках 'год рождения' выражение '1901' на null". Не знаю, чем это тебе помогло, у тебя то дата по нулям
 

XoD

Самец :)
ты во всех темах уже засветился. ты скажи что тебе нужно, какая цель и задачи

Он долго уговаривал меня написать за него электронный журнал для школы. Вот его цель. Это конечно прекрасно, что у человека загорелось учиться программированию, но брать на себя ответственность за столь серьезный проект при очень малых сроках и нуле знаний...лихо :)
 

    galaX

    очки: 1.079
    Не одного тебя ))
Сверху