|
|
|
|
|
для: maximum8
(25.06.2013 в 15:27)
| | А, ну тада ладно =) | |
|
|
|
|
|
|
|
для: 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
| Нет? | |
|
|
|
|
|
|
|
для: Sfinks
(25.06.2013 в 11:20)
| | попробуй по другому)
смотрите, таблица выше у меня есть. Она заполнена результатами document_from и document_to. При ходят следующие данные в виде массива:
мне нужно выбрать все записи, у которых document_to совпадает со значениями из массива. решение которое приходит первым:
SELECT *
FROM " . PREFIX . "_document_link
WHERE document_to = '51' OR document_to = '52'
|
и так далее. Но, в массиве может быть больше 10 или 30 значений. Другое решение есть? | |
|
|
|
|
|
|
|
для: maximum8
(24.06.2013 в 22:31)
| | > выполнить поиск по таблице
Ну так вы опишите поиск словами?... Поиск поиску рознь.
Пока могу сказать точно только одно: Поиск - это самая сильная сторона SQL! Поэтому я и не пойму, что вы там пытаетесь сделать с массивами, т.к. запросы нужно строить так, чтобы в PHP возвращался уже готовый результат, а не промежуточные итоги.
Еще раз говорю - опишите свой поиск словами. | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: Sfinks
(24.06.2013 в 13:44)
| | таблицу я сделал, вопрос ещё назрел по поиску теперь. Если в итоге приходит массив вида
как оптимальнее сделать поиск. Если гонять цикл и собирать кучу OR (value = '51') что по скорости будет, если таких параметров может быть около 50 штук? | |
|
|
|
|
|
|
|
для: Sfinks
(24.06.2013 в 13:44)
| | Сделал доп таблицу, так как при более 10 000 записей тормозить будет скорее всего. Спасибо за совет, не подумал над самым простым решением ;) | |
|
|
|
|