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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вложенный запрос с использованием like

Сообщения:  [1-10]   [11-12] 

 
 автор: Sfinks   (25.06.2013 в 22:00)   письмо автору
 
   для: maximum8   (25.06.2013 в 15:27)
 

А, ну тада ладно =)

  Ответить  
 
 автор: maximum8   (25.06.2013 в 15:27)   письмо автору
 
   для: Sfinks   (25.06.2013 в 14:13)
 

нет, просто данные из формы с пачкой чекбоксов

  Ответить  
 
 автор: Sfinks   (25.06.2013 в 14:13)   письмо автору
 
   для: maximum8   (25.06.2013 в 12:02)
 

<?php
  $a 
= array(51,52,77,34);
  
$sql "SELECT *
          FROM " 
PREFIX "_document_link 
          WHERE document_to IN("
.implode(',',$a).")";

Тут вопрос у меня был в другом. А именно в:
> При ходят следующие данные в виде массива
Откуда они приходят? Подозреваю, что из какого-то еще запроса, вроде:
SELECT document_to FROM links WHERE document_from = 12
Нет?

  Ответить  
 
 автор: maximum8   (25.06.2013 в 12:02)   письмо автору
 
   для: Sfinks   (25.06.2013 в 11:20)
 

попробуй по другому)

смотрите, таблица выше у меня есть. Она заполнена результатами document_from и document_to. При ходят следующие данные в виде массива:


array(51,52,77,34);


мне нужно выбрать все записи, у которых document_to совпадает со значениями из массива. решение которое приходит первым:


SELECT *
        FROM " . PREFIX . "_document_link
        WHERE document_to = '51' OR document_to = '52'


и так далее. Но, в массиве может быть больше 10 или 30 значений. Другое решение есть?

  Ответить  
 
 автор: Sfinks   (25.06.2013 в 11:20)   письмо автору
 
   для: maximum8   (24.06.2013 в 22:31)
 

> выполнить поиск по таблице
Ну так вы опишите поиск словами?... Поиск поиску рознь.
Пока могу сказать точно только одно: Поиск - это самая сильная сторона SQL! Поэтому я и не пойму, что вы там пытаетесь сделать с массивами, т.к. запросы нужно строить так, чтобы в PHP возвращался уже готовый результат, а не промежуточные итоги.

Еще раз говорю - опишите свой поиск словами.

  Ответить  
 
 автор: maximum8   (24.06.2013 в 22:31)   письмо автору
 
   для: Sfinks   (24.06.2013 в 19:42)
 

другими словами, таблица уже заполнена, допустим мне нужно не количество посчитать, это же сделано, а выполнить поиск по таблице, ради этого в том числе всё это и делалось.

  Ответить  
 
 автор: maximum8   (24.06.2013 в 22:30)   письмо автору
 
   для: Sfinks   (24.06.2013 в 19:42)
 

нет, я же написал, что этот запрос уже сделал, получил аналог вашего. Я уже спрашиваю по использование этой связки таблиц.

  Ответить  
 
 автор: Sfinks   (24.06.2013 в 19:42)   письмо автору
 
   для: maximum8   (24.06.2013 в 18:06)
 

Вы словами опишите, что вы хотите сделать? А то чет я суть не уловил.

Если то, что вы пытались сделать в первом посте, то это также делается на уровне СУБД.

Предположим у нас есть таблица documents(doc_id,doc_title,doc_text) и таблица связей links(doc_id,linked_doc_id).
И мы хотим вывести doc_id, doc_title, doc_text и количество связанных документов.
Делается это так:
SELECT doc_id
     , doc_title
     , doc_text
     , count( linked_doc_id )co
FROM documents
LEFT JOIN links USING( doc_id )
GROUP BY doc_id, doc_title, doc_text
, либо
SELECT *
     , ( SELECT count(*) 
         FROM links
         WHERE doc_id=d.doc_id )co
FROM documents d

  Ответить  
 
 автор: maximum8   (24.06.2013 в 18:06)   письмо автору
 
   для: Sfinks   (24.06.2013 в 13:44)
 

таблицу я сделал, вопрос ещё назрел по поиску теперь. Если в итоге приходит массив вида

array(51,52,77,34);


как оптимальнее сделать поиск. Если гонять цикл и собирать кучу OR (value = '51') что по скорости будет, если таких параметров может быть около 50 штук?

  Ответить  
 
 автор: maximum8   (24.06.2013 в 15:19)   письмо автору
 
   для: Sfinks   (24.06.2013 в 13:44)
 

Сделал доп таблицу, так как при более 10 000 записей тормозить будет скорее всего. Спасибо за совет, не подумал над самым простым решением ;)

  Ответить  

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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