Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос к таблицам базы данных, по текстовому полю?
 
 автор: xpom   (07.10.2006 в 12:19)   письмо автору
 
 

Уважаемые профессионалы!
Подскажите пожалуйста, как сделать запрос к таблице Б.Д. что бы выбрать из таблицы только те данные которые имеют записи в определенном текстовом поле?

   
 
 автор: cheops   (07.10.2006 в 12:43)   письмо автору
 
   для: xpom   (07.10.2006 в 12:19)
 

Для этого прибегают к запросу вида
SELECT * FROM tbl WHERE field = 'записи в определенном текстовом поле'

   
 
 автор: xpom   (07.10.2006 в 12:48)   письмо автору
 
   для: cheops   (07.10.2006 в 12:43)
 

Я так понял, что это когда знаешь уже записи в этом поле? Мне нужно выбрать только те данные, которые имеют запись в текстовом поле (я эти данные не знаю), и вывести их на страницу?

   
 
 автор: cheops   (07.10.2006 в 12:55)   письмо автору
 
   для: xpom   (07.10.2006 в 12:48)
 

Т.е. те, у которых поле field не пустое? Тогда можно поступить следующим образом
SELECT * FROM tbl WHERE field <> ''

   
 
 автор: xpom   (07.10.2006 в 13:13)   письмо автору
 
   для: cheops   (07.10.2006 в 12:55)
 

Да, те у которых поле field не пустое! После field равно не нужно? Вот эти <> '' символы обазначают: выбор с не пустыми полями?

   
 
 автор: cheops   (07.10.2006 в 13:16)   письмо автору
 
   для: xpom   (07.10.2006 в 13:13)
 

Да, последовательность <> '' означает "не равно пустой строке".

   
 
 автор: xpom   (07.10.2006 в 13:28)   письмо автору
 
   для: cheops   (07.10.2006 в 13:16)
 

Спасибо большое за помощь!

   
 
 автор: xpom   (07.10.2006 в 19:16)   письмо автору
 
   для: xpom   (07.10.2006 в 13:28)
 

Еще возник вопрос!
Вот я делаю запрос к таблице с этим текстовым полем

$res = mysql_query("SELECT PID, Name FROM Post",$db);

как сделать что бы выбрались данные, у которых текстовое поле field пустое и вывести их в выпадающий список?

   
 
 автор: Slafka   (07.10.2006 в 20:51)   письмо автору
 
   для: xpom   (07.10.2006 в 19:16)
 


SELECT PID, Name FROM Post WHERE Name='';

   
 
 автор: xpom   (07.10.2006 в 20:55)   письмо автору
 
   для: Slafka   (07.10.2006 в 20:51)
 

Это здесь выбираются с пустым полем Name?

   
 
 автор: Slafka   (07.10.2006 в 21:12)   письмо автору
 
   для: xpom   (07.10.2006 в 20:55)
 

Да, причем лучше сделать запрос

SELECT PID FROM Post WHERE Name = '';

т.к поле Name будет заведомо пустое =)

   
 
 автор: xpom   (07.10.2006 в 21:38)   письмо автору
 
   для: Slafka   (07.10.2006 в 21:12)
 

Так оно будет везде пустое, а мне нужно по какому-то полю выбирать данные?

   
 
 автор: cheops   (08.10.2006 в 13:52)   письмо автору
 
   для: xpom   (07.10.2006 в 19:16)
 

Для этого следует воспользоваться скриптом вида
<?php
  $res 
mysql_query("SELECT PID, Name FROM Post WHERE field = ''",$db);
  if(!
$res) exit(mysql_error());
  if(
mysql_num_rows($res))
  {
     echo 
"<select name=PID>";
     while(
$post mysql_fetch_array($res))
     {
        echo 
"<option value=".$post['PID'].">".$post['Name']."</option>";
     }
     echo 
"</select>";
  }
?>

   
 
 автор: xpom   (13.10.2006 в 20:41)   письмо автору
 
   для: cheops   (08.10.2006 в 13:52)
 

А как выбрать те данные, которые имеют значения в поле field?

   
 
 автор: cheops   (13.10.2006 в 21:09)   письмо автору
 
   для: xpom   (13.10.2006 в 20:41)
 

Для этого поле нужно добавить через запятую в списке полей после ключевого слова SELECT
<?php 
  $res 
mysql_query("SELECT PID, Name, field FROM Post WHERE field = ''",$db);
?>

Правда в данном случае это не имеет смысла, так как поле принимает пустое значение.

   
 
 автор: xpom   (13.10.2006 в 21:23)   письмо автору
 
   для: cheops   (13.10.2006 в 21:09)
 

А как добавить в имеющуюся таблицу текстовое поле field?

   
 
 автор: cheops   (13.10.2006 в 22:36)   письмо автору
 
   для: xpom   (13.10.2006 в 21:23)
 

Для этого необходимо воспользоваться оператором ALTER TABLE. Вы в какую позицию хотите поставить поле field?

   
 
 автор: xpom   (14.10.2006 в 12:57)   письмо автору
 
   для: cheops   (13.10.2006 в 22:36)
 

После 9-го по счету поля, это значит 10-я позиция?

   
 
 автор: cheops   (14.10.2006 в 13:18)   письмо автору
 
   для: xpom   (14.10.2006 в 12:57)
 

9-е поле как называется?

   
 
 автор: xpom   (14.10.2006 в 14:36)   письмо автору
 
   для: cheops   (14.10.2006 в 13:18)
 

Называется:

Dost         VARCHAR(150),

   
 
 автор: cheops   (14.10.2006 в 15:17)   письмо автору
 
   для: xpom   (14.10.2006 в 14:36)
 

Тогда можно воспользоваться следующим запросом
ALTER TABLE `Post` ADD `field` TEXT NOT NULL AFTER `Dost`

   
 
 автор: xpom   (14.10.2006 в 18:16)   письмо автору
 
   для: cheops   (14.10.2006 в 15:17)
 

Что-то не получается с помощью этого скрипта:

<?php  
  $res 
mysql_query("SELECT PID, Name,  FROM Post WHERE field = ''",$db); 
?> 

выбрат данные не имеющие значений в поле field? С кодом
WHERE field = 
данные не выводятся, а без этого кода выводятся все данные?
Мне нужно разделить выбор данных из таблицы, один запрос выбирает данные не имеющие значения в поле field, а другой запрос имеющий значения в поле field. Помогите пожалуйста это проявить в скрипте?

   
 
 автор: cheops   (14.10.2006 в 22:14)   письмо автору
 
   для: xpom   (14.10.2006 в 18:16)
 

Скрипт
<?php   
  $res 
mysql_query("SELECT PID, Name,  FROM Post WHERE field = ''",$db);  
?> 

ошибочен, необходимо писать либо так
<?php   
  $res 
mysql_query("SELECT PID, Name  FROM Post WHERE field = ''",$db);  
?> 

либо так
<?php   
  $res 
mysql_query("SELECT PID, Name, field  FROM Post WHERE field = ''",$db);  
?> 

т.е. запятой после field быть не должно.

   
 
 автор: xpom   (15.10.2006 в 11:30)   письмо автору
 
   для: cheops   (14.10.2006 в 22:14)
 

Что-то все равно не получается? Там где ставлю

WHERE field = ''"

данные не выводятся, а там где не ставлю code]
WHERE field = ''"
[/code]
выводятся все данные имеющие и не имеющие значений в поле field???

   
 
 автор: cheops   (15.10.2006 в 13:26)   письмо автору
 
   для: xpom   (15.10.2006 в 11:30)
 

А поле field в искомых строках точно принимает пустую строку, а не NULL?

   
 
 автор: xpom   (15.10.2006 в 13:49)   письмо автору
 
   для: cheops   (15.10.2006 в 13:26)
 

Я не знаю? А как это можно проверить?

   
 
 автор: cheops   (15.10.2006 в 19:37)   письмо автору
 
   для: xpom   (15.10.2006 в 13:49)
 

Создайте дамп таблицы и посмотрите какие значения принимают поля.

   
 
 автор: xpom   (15.10.2006 в 21:53)   письмо автору
 
   для: cheops   (15.10.2006 в 19:37)
 

Наверное поле field в искомых строках точно принимает NULL? Потому что поля имеют вот такие значения: NULL - YES ; Default - NULL?
А как сделать чтобы поле field в искомых строках принимало пустую строку?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования