|
Тема
|
събирам предложения за оптимизация
|
|
Автор |
Topбaлaн (любопитко) |
Публикувано | 07.01.03 11:29 |
|
strSql = "SELECT алабала, " +
____"(SELECT име + ' ' + фамилия FROM owners WHERE owner = owner_id) AS собственик, " +
____"(SELECT име + ' ' + фамилия FROM owners WHERE technical = owner_id) AS поддръжка, " +
____"FROM [една таблица] CROSS JOIN owners";
този SQL стринг работи, посъкратил съм го малко и съм сложил подчертавки за да е малко по прегледно...
имам две таблици - в едната се пазят данни и вместо имената на хората се пишат някакви ИД-та, в другата има същите ИДта и съответните имена...
въпроса име е следния:
има ли по принцип друг начин да се реализира такава заявка, която връща
алабала, собственик, поддръжка
ако има - как? кой начин е най бърз?
| |
Тема
|
Re: събирам предложения за оптимизация
[re: Topбaлaн]
|
|
Автор |
phpGuru (непознат) |
Публикувано | 07.01.03 12:40 |
|
select X.алабала, (O1.име + ' ' + O1.фамилия) AS собственик, (O2.име + ' ' + O2.фамилия) AS поддръжка FROM таблица AS X, owners AS O1, owners AS O2 WHERE O1.owner = X.owner_id AND O2.technical = X.owner_id
ако съм разбрал правилно и при положение, че винаги имаш собственик и поддръжка ( ако немаш тогава с лефт джойни )
и малко странна ми се струва, че трябва да е структурата на базата - owners по-специално (или явно не съм схванал ква е идеата)
| |
Тема
|
Re: събирам предложения за оптимизация
[re: Topбaлaн]
|
|
Автор |
salle (непознат) |
Публикувано | 09.01.03 14:08 |
|
CROSS JOIN ???????????
А стига бе. А за какво ти е това Декартово произведение?
Нааааай-простичкия пример за CROSS JOIN е:
SELECT * FORM a,b;
в 99.999999999999% от случаите това ама изобщо не ти трябва
WHERE owner = owner_id ?????
Да не би да ти се мотае в главата нещо от рода на:
SELECT .... FROM owners AS owner, owners AS support WHERE owner.owner_id = support.owner_id ...;
А?
Що за таблица е това?
| |
Тема
|
Re: събирам предложения за оптимизация
[re: salle]
|
|
Автор |
Topбaлaн (любопитко) |
Публикувано | 10.01.03 08:49 |
|
ами какво ми се мотае в главата
имам две таблици (имената и полетата не съм ги мислил аз) в едната се пишат цифрички в няколко колони (и други данни разбира се)
в другата срещу всяка цифричка стоят данни за хора - имена, телефони и др. подобни...
та вместо да излиза
алабала 1 2
искам да е
алабала Димитър Стефанов Камен Зидаров
надявам се, тоз път да съм го обяснил ясно?
CROSS JOIN-ът идва от куири билдера естествено....![](http://i.dirbg.com/clubs/icons/tongue.gif)
| |
Тема
|
Re: събирам предложения за оптимизация
[re: Topбaлaн]
|
|
Автор |
NDeu (минаващ) |
Публикувано | 10.01.03 16:03 |
|
По същество phpGuru (непознат) 07.01.03 12:40 ти е отговорил.
Бих добавил една малка корекция, в случай, че структурата ти е такава, както на мен ми се струва
select X.алабала, (O1.име + ' ' + O1.фамилия) AS собственик, (O2.име + ' ' + O2.фамилия) AS поддръжка FROM таблица AS X, owners AS O1, owners AS O2 WHERE O1.Id= X.owner_id AND O2.Id = X.technical
| |
Тема
|
Re: събирам предложения за оптимизация
[re: NDeu]
|
|
Автор |
бaй Любo (#!/usr/bin/ksh) |
Публикувано | 10.01.03 17:14 |
|
И аз като чета ми се струва че таблица има две колони, които сочат към два (потенциално различни) реда в оунер.
В такъв случай горното решение (на ндеу) е правилно -- оунерс трябва да участва два пъти в заявката щото за всеки ред от таблица турсиш два реда от оунер по различни джоин условия.
По въпроса за оптимизацията -- плесни един индекс в/у оунер.ид и това е. След като нямаш никакъв филтър в/у таблица, тя така и така ще се чете с тейбл скан.
| |
Тема
|
Re: събирам предложения за оптимизация
[re: бaй Любo]
|
|
Автор |
Topбaлaн (любопитко) |
Публикувано | 10.01.03 20:46 |
|
индекси има...
| |
Тема
|
Re: Недей така бе Торбалане!!
[re: Topбaлaн]
|
|
Автор |
salle (непознат) |
Публикувано | 10.01.03 23:20 |
|
Стига си ни мъчил да гадаем какви са ти таблиците и какво искаш.
Разкажи с думи прости:
Имам таквази таблица с колонки: Име, Фамилия, Нещоси друго
и таблица с колонки Такова, Такова и Такова
И искам начи да ми дойде тука Торбалан в един чувал ...
.... чакай бе ... не .. това беше от приказката.
Та кажи:
Искам те тука да ми дойде една таблица в която
Срещу всяко име да има Такова и Таквизи според Онова Ей нам.
Така де ...
Дай примерчета
| |
|
|
|
|