[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: выборка сразу из двух таблиц
dima4321
Это запрос к одной таблице.

$sql = "SELECT name,style FROM names "; 
$data = mysql_query($sql);

while($row=mysql_fetch_assoc($data))

{
echo $row['name'];
echo '<br>';
}


а как составить запрос сразу к двум таблицам.

т.е. есть еще таблица about и в ней столбик text

хочу вывести сразу значения из первой и второй таблицы в одном массиве.

Запрос типа:

$sql = "SELECT name,style,t ext FROM names,about ";

Как правильно составить ??






Спустя 1 минута, 49 секунд (19.02.2011 - 14:44) dima4321 написал(а):
ах да забыл условие:

id в таблице names = name_id в таблице about

Спустя 41 минута, 46 секунд (19.02.2011 - 15:26) T1grOK написал(а):

SELECT names.`name`, names.`style`, about.`text ` FROM names, about WHERE names.`name_id` = about.`name_id`

Спустя 40 минут, 38 секунд (19.02.2011 - 16:07) dima4321 написал(а):
Не не получается ...


В итоге сделал так, но есть косяк:

 $sql="SELECT `name`, `style`, `text` FROM `names` INNER JOIN `history` ON `name_id` = `names`.`id` WHERE `page` = '1'";




Итог выводит из таблицы name только те продукты, для которых существуют значения в таблице history.

Нужно сделать так, чтобы выводились все пункты из таблицы name. Там где для данного name не существует значения в таблице history - нужно , чтобы значение name выводилось, а из history будет пустота cоотво-о .

Нужно сделать все в одном запросе. Т.к. работаю сразу с одним массивом.

Спустя 43 минуты, 34 секунды (19.02.2011 - 16:50) T1grOK написал(а):
Так нужно было сразу объяснять.

SELECT names.`name`, names.`style`, history.`text` FROM names LEFT JOIN history ON names.`id` = history.`name_id`

Спустя 12 минут, 33 секунды (19.02.2011 - 17:03) dima4321 написал(а):
T1grOK


Спасибо большое ). Твой запрос выводит все.
В принципе можно было бы и оставить , но если ты обратил внимание в таблице history контент выводится по страницам.

мое условие было WHERE `page` = '1' на таблицу history

Как его привязать иначе некоторые имена выскакивают по 2-3 раза.


Спустя 10 минут, 53 секунды (19.02.2011 - 17:14) T1grOK написал(а):
То есть, у тебя для одной записи из первой таблицы, может быть несколько записей из второй?

Спустя 40 минут, 33 секунды (19.02.2011 - 17:54) dima4321 написал(а):
Да все верно.

Поэтому была и создана вторая таблица.

Т.е. например товар хлеб

а вторая таблица в ней 2 страницы с описанием хлеб. которые сслыаются на один id .

фактически вторая таблица такого вида

хлеб стр 1
хлеб стр2
пиво стр1





Мне нужно чтобы ввыводился хлеб с описанием первой страницы


Пробую так

$sql="SELECT names.`name`, names.`style`, history.`text` FROM names LEFT JOIN history ON names.`id` = history.`name_id` history.page = 1";


но некорректно..есть еще варианты ??)

Спустя 1 час, 30 минут, 7 секунд (19.02.2011 - 19:24) dima4321 написал(а):
Ау ??))

запрос нужен такой, чтобы было и второе условие, которое подразумевает, что описаний может и не быть ))
а так он тупо собирает все страницы с page=1

таблица name
хлеб
молоко
соль

таблица history
описание хлеба 1
описание хлеба 2
описание молока 1

Как видишь соли нет

В мою результирующую таблицу я хочу поиметь

хлеб описиание 1
молоко описание 1
соль


пока что имею

хлеб описиание 1
молоко описание 1

Спустя 32 минуты, 52 секунды (19.02.2011 - 19:57) T1grOK написал(а):

SELECT names.`name`, names.`style`, history.`text` FROM names LEFT JOIN history ON names.`id` = history.`name_id` AND history.`page` = 1

Спустя 14 часов, 20 минут, 46 секунд (20.02.2011 - 10:18) dima4321 написал(а):
Да ты прав ) вчера на другом форуме подсказали ))

не хватало только and ))

Спустя 4 часа, 52 минуты, 31 секунда (20.02.2011 - 15:10) m4a1fox написал(а):
А не проще делать еще один запрос. Насколько я понял, сначала автор делает запрос к одной таблице в БД, а затьем ориентируясь на выборку из оной, я считаю, можно сделать и второй запрос ко второй таблице из этой же БД. То есть по сути - запрос в запросе, только с другими переменными.

Спустя 4 часа, 28 минут, 33 секунды (20.02.2011 - 19:39) dima4321 написал(а):
мне нужен один результирующий массив, так как данные я в цикле вывожу в таблицу.



_____________
Работаю за еду ! __))
И за плюсики !
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.