Сортировка при выборке

Fallen

Новичок
Сортировка при выборке

Суть проблемы такая:
Есть запрос вида
select pole1 from A
И есть таблица Б с полями pole2 и pole3, причем A.pole1 связано с Б.pole3 отношением один к одному.
Так вот: необходимо чтобы результат запроса
select pole1 from A
сортировался по Б.pole2.
Сделать выборку из двух таблиц, например по inner join в данном случае не подходит
 

Maria

Guest
Re: Сортировка при выборке

Автор оригинала: Fallen
Сделать выборку из двух таблиц, например по inner join в данном случае не подходит
Почему?
 

zarus

Хитрожопый макак
Код:
SELECT 
   A.pole1
FROM 
   `A`, `B`
WHERE 
   A.pole1 = B.pole3
ORDER BY 
   B.pole2
Только каким образом этот вопрос относится к PHP?
 

Fallen

Новичок
просто именно по структуре приложения, мне надо сделать выборку только из A...

-~{}~ 08.02.06 10:50:

Автор оригинала: zarus
Код:
SELECT 
   A.pole1
FROM 
   `A`, `B`
WHERE 
   A.pole1 = B.pole3
ORDER BY 
   B.pole2
неа, "from A" - в моем случае обязательное условие
 

zarus

Хитрожопый макак
Прежде, чем постить "неа", ты хотя бы запускал запрос?
Может тебе стоит книжку по SQL купить, чиста почитать, а не лазить по форуму с дурацкими вопросами, ответы на которые в книжке на первых страницах.
 

Fallen

Новичок
Автор оригинала: zarus
Прежде, чем постить "неа", ты хотя бы запускал запрос?
Может тебе стоит книжку по SQL купить, чиста почитать, а не лазить по форуму с дурацкими вопросами, ответы на которые в книжке на первых страницах.
А может тебе сначала вникнуть в суть вопроса?

Еще раз говорю: в качестве данных для "from" я могу передать только один параметр, а именно "А"!

"Б" я туда передать не могу, иначе бы и не спрашивал, ибо то, что ты мне предложил - простейшие азы
 

zarus

Хитрожопый макак
Автор оригинала: Fallen
А может тебе сначала вникнуть в суть вопроса?

Еще раз говорю: в качестве данных для "from" я могу передать только один параметр, а именно "А"!

"Б" я туда передать не могу, иначе бы и не спрашивал, ибо то, что ты мне предложил - простейшие азы
Хорошо, давай начнем с того, что ты хочешь получить. Потому что в твоем первом посте ничего вразумительного нет.
 

Fallen

Новичок
ок, запрос составляется из элементов массива типа
$arr[1]="A";
$arr[2]="pole1",
$arr[3]="pole2",

$sql='SELECT '.$arr[2].' from '.$arr[1].' order by '.$arr[3];

$arr[1] у меня всегда содерждит только А, поэтому "select from A,Б" я сделать не могу...

мне надо что-нить типа этого:

select pole1 from A order by (select Б.pole2 from A inner join Б on А.pole1=Б.pole3)

понятно, что этот запрос работать не будет, ибо в качестве параметра для order нужно указать имя поля, а не его значения, соответственно и вопрос: можно ли как то это обойти?
 

zarus

Хитрожопый макак
Автор оригинала: Fallen
понятно, что этот запрос работать не будет, ибо в качестве параметра для order нужно указать имя поля, а не его значения, соответственно и вопрос: можно ли как то это обойти?
Нельзя, потому что ты сам себе злобный буратино. Читал сказку "Про Федота-стрельца"? Ты - ее главный герой в данном случае.
----
По теме. Объясни, откуда это берется, и ПОЧЕМУ это делается через ... ?
PHP:
$arr[1]="A";
$arr[2]="pole1",
$arr[3]="pole2",
$sql='SELECT '.$arr[2].' from '.$arr[1].' order by '.$arr[3];
----
мне надо что-нить типа этого:
select pole1 from A order by (select Б.pole2 from A inner join Б on А.pole1=Б.pole3)
Тебе это не нужно, потому что оно не будет работать не потому, что ты не знаешь pole3, а потому что твой запрос - полный бред.
 

Fallen

Новичок
естественно запрос бред, я его написал, лишь чтоб ты понял суть проблемы...
откуда это берется долго объяснять - переделываю чужую программу (написанную через заднее место), если уходить от такой структуры, то будет быстрее написать новый скрипт...
собственно я и хотел узнать, есть ли какой способ сделать то, что нужно, оставив старый код
 

zarus

Хитрожопый макак
Автор оригинала: Fallen
...то будет быстрее написать новый скрипт...
...или изменить старый так, чтобы он работал по-новому.
Других вариантов у тебя нет.
 

vovik

Новичок
Автор оригинала: Fallen
мне надо что-нить типа этого:

select pole1 from A order by (select Б.pole2 from A inner join Б on А.pole1=Б.pole3)

понятно, что этот запрос работать не будет, ибо в качестве параметра для order нужно указать имя поля, а не его значения, соответственно и вопрос: можно ли как то это обойти?
Нигде не написано, какая СУБД используется.
Могу сказать, что для MSSQL запрос вида
[sql]
SELECT pole1 FROM A ORDER BY (SELECT pole2 FROM B WHERE pole3 = A.pole1)
[/sql]
вполне корректен.
 

vovik

Новичок
Ты проверь запрос, вполне может получиться, MySQL тоже не дурак, у меня просто нету его сейчас под рукой ...

-~{}~ 09.02.06 11:27:

Проверил сам :) Работает как часы. Версия - 4.1.13a.
 
Сверху