помогите правильно построить запрос с соединением таблов

123

Guest
помогите правильно построить запрос с соединением таблов

Есть таблица1:

id | stringid | value
-------------------------

Есть таблица2:

id | stringid | value | fullvalue
--------------------------------------


Нужно сделать так: (отсортировав по stringid)

id | stringid | value
-------------------------
id | stringid | value | fullvalue
--------------------------------------

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

mysql_query("SELECT value FROM table1, table2 WHERE table1.stringid = table2.stringid AND bla bla bla");
Синтаксис неверен, потому что мускул пишет, что value не уникальное поле
 

123

Guest
Я читаю. И написал сюда, именно потому, что не понял =(
 

Krisha

pain in the neck
123
нифига не понятно, что же тебе нужно получить в результате, а ругается оно потому, что не знает какое value ты от него хочешь:

SELECT table1.value, table2.value FROM table1, table2 WHERE ...
 

fixxxer

К.О.
Партнер клуба
Krisha
наоборот :)

123
после едита - заметно лучше, вижу, мануал читаешь. =)
 

chira

Новичок
если MySQL 4.x
Код:
(SELECT id, stringid , value, 0 as fullvalue, 0 as ord
FROM table1)
UNION
(SELECT id, stringid , value, fullvalue, 1
FROM table2)
ORDER BY stringid, ord
 

fixxxer

К.О.
Партнер клуба
chira, ты телепат. Я бы фиг догадался, что такое "должны располагаться как бы друг на друге". :) Порнография какая-то, блин.



Кстати, не могу придумать ни одного случая, когда такая структура бд имеет смысл.
 

123

Guest
Вот, что у меня получилось:
PHP:
$sql1 = mysql_query("
SELECT table1.parent_id, table1.server_id, table1.name, table1.size, table2.text, table3.string FROM table1, table2, table3 
WHERE table1.name = 'blabla'
AND table2.id = table1.parent_id
AND table3.id = table1.server_id LIMIT 30
");
while ($sql2 = mysql_fetch_array($sql1))
{
        #//*
        echo $sql2['parent_id'];
        echo $sql2['server_id'];
        echo $sql2['size'];
        echo $sql2['string'];
        echo $sql2['text'];
        echo $sql2['name'];
        echo $sql2['string'];
        #*//
}
но задача осталась: таблицу table1 нужно соединить с table2 отсортировав по ключу table1.parent_id (уже с алиасом, потому как в запросе таблица table2 уже используется для выборки первой порции данных) условия WHILE будут практически идентичны. Как это сделать уже с моим примером?

-~{}~ 27.04.05 22:35:

и сразу тишина =)
 

yugene

Отошел от дел
123, че то ты спросил одну муть, забил на ответы, решил спросить другую муть...

Автор оригинала: 123
отсортировав по ключу table1.parent_id (уже с алиасом)
сортировку проводят с помощью ORDER BY

причем здесь алиас?

-~{}~ 27.04.05 22:48:

123, или это одна и та же муть? :)
 

123

Guest
Я ни на что не забивал, это один и тот же код - названия столбцов переименовал у таблиц, вот и все.

А алиас: речь про таблицу table2, она уже используется в моем примере. Посему, по идее, ее потребуется повторно подключить, для этого ее придется назвать по другому

-~{}~ 27.04.05 23:03:

так и знал, что помощи не дождешься
 
Сверху