|
|
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
Есть вот такая конструкция: ... SELECT ic.category_id .... LEFT JOIN ".$table_prefix."items_categories AS ic ON ic.item_id = i.item_id ... В табличке ic имеем: id item_id category_id 1 2 123 2 2 222 3 2 656 Судя по результату в запросе отбирается значение category_id из последней удовлетворяющей условию ic.item_id = i.item_id записи. А как сделать так чтобы отбиралось значение с наименьшим ic.id, т.е. 123 вместо 656 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 12:50:27 |
|
||
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 12:54:02 |
|
||
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Я похоже не совсем точно вопрос задал, уточняю: в таблице поля item_id category_id 119 73 119 74 Русским языком: некий товар 119 принадлежит категориям 73 и 74 Никакого индексного поля нет. При отборе category_id по item_id отбирается какая то из строк (понятия не имею какая) Как сделать так чтобы отбиралась та что первой была добавлена в таблицу MySQL MySQL же как то при выводе эти строки распределяет в каком то порядке.. значит наверное есть какое то скрытое поле их нумерации или что ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 13:09:52 |
|
||
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
anstrem, таблица - куча. порядка в ней нет, как нет и поля определяющего очередность вставки. если, конечно, ты сам об этом не побеспокоился заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 13:12:08 |
|
||
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
anstremНикакого индексного поля нет. При отборе category_id по item_id отбирается какая то из строк (понятия не имею какая) Как сделать так чтобы отбиралась та что первой была добавлена в таблицу MySQL Никак. Нужно поле "Дата добавления", или поле порядка, чтобы определить, какая была первой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 13:13:55 |
|
||
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
PallarisanstremНикакого индексного поля нет. При отборе category_id по item_id отбирается какая то из строк (понятия не имею какая) Как сделать так чтобы отбиралась та что первой была добавлена в таблицу MySQL Никак. Нужно поле "Дата добавления", или поле порядка, чтобы определить, какая была первой. Странно что значит никак и таблица куча. Когда захожу в MySQL записи отображаются все время в одном и том же порядке, а не прыгают произвольно по страницам. При этом они не отсортированы ни по одному полю, но тем не менее всегда идут в одном порядке. Предполагаю с уверенностью 100% что подряд несколько SELECT-ов всех записей по данной таблице тоже будут тождественны. Так вот как MySQL определяет что эту запись надо в выводе расположить выше, а эту ниже ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 14:11:12 |
|
||
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
anstremТак вот как MySQL определяет что эту запись надо в выводе расположить выше, а эту ниже ?Никак не определяет. Как прочитает из файла, так и выведет. И порядок в любой момент может измениться. Например, JOIN-ом. Или если выбирать не все поля, а только некоторые, которые попадают в какой-нибудь индекс - тогда может быть (а может и не быть, это как оптимизатор решит) порядок по индексу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 14:37:58 |
|
||
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
anstrem, Ну ты чего такой трудный? Тебе же сказали: в общем случае таблица - куча. Причем в прямом смысле этого слова. Чтобы понятнее было, представь себе шкаф с вещами. Вот это будет более-менее упорядоченная структура, и вещи в ней будут как-то систематезированы - трусы на одной полке, футболки на другой, брюки на третьей. Платья и куртки так вообще будут висеть на вешалке. А теперь представь, что всё содержимое шкафа тупо вывалили на пол. Вот это и будет "куча". И данные в таблице в общем случае так и храняться - в хаотическом "порядке". Теперь по поводу "Когда захожу в MySQL записи отображаются все время в одном и том же порядке, а не прыгают произвольно по страницам". Так если кучу руками не трогать, и постоянно заходить к ней с одной и тойже стороны - то она будет выглядеть всегда одинаково, создавая ощущение "порядка". Но глядя на эту кучу можешь ли ты с уверенностью сказать, что из шкафа выпало раньше, а что позже? В каком порядке скидывались на пол вещи: сначала трусы, потом брюки, или наоборот? А трусы вначале синии падали или красные? А может вообще - желтые? А теперь попробуй посмотреть на кучу с другого бока? Или извлечь из кучи только трусы. Или только брюки. Порядок в куче с брюками будет всё такой же как в исходной куче? Вот и с таблицей также. Лежат в ней данные кучей и если всегда зхаходить одним и тем же запросом (с одного и того же бока), то и куча выглядит как бы "одинаково". Но никакого порядка в этом нет и всё может измениться, если оптимизатор решит заходить к куче с другой стороны. Но о б этом тебе выше уже написали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 04:00:31 |
|
||
|
Как выбрать нужное значение при его неуникальности ?
|
|||
|---|---|---|---|
|
#18+
anstrem, При отборе category_id по item_id отбирается какая то из строк (понятия не имею какая) Как сделать так чтобы отбиралась та что первой была добавлена в таблицу MySQL в твоем случае на самом деле должны выводится обе категории, а не одна. нам будет легче, если ты приведешь описания всех таблиц полностью, запрос полностью, и всё что он выводит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 07:21:50 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=139&tid=1833295]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 296ms |

| 0 / 0 |
