Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Можно ли в php проводить выборку сразу из 2-х таблиц.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
maximka
Отправлено: 04 Июня, 2007 - 12:32:25
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июнь 2007  


Помог: 0 раз(а)




Проблема вот. Делаю курсовой - есть таблица, в ней есть 2 поля klient и lek. Через них идет связь с таблицами klient и lek соответсвенно. Необходимо через эти поля получать значения из этих таблиц. Можно ли в php написать такой запрос?

Простой запрос, например: $query="select * from klient order by name"; все понятно, а тут.... не пойму никак...Это вот для одной таблицы - $query="select * from lek, zakaz where lek.id=zakaz.lek";

Вот код. Я с php тока сейчас так сказать познакомился))) - учеба. помогите, кто чем может.

? Error_Reporting(E_ALL & ~E_NOTICE);

$link = @mysql_pconnect("localhost","root") or die("не могу соедениться с сервером");
$seldb = mysql_select_db("apteka", $link) or die("не могу соедениться с базой данных");

$query="??????? Чего тут надо написать ?????????";
$result = mysql_query($query);

print "<h1>Список заказов</h1><br>
<form action='controller.php' method='post'>
<table border='1'> <tr><th>ФИО <th> лекарство <th>колво
<input type='hidden' name='target' value='deleteZakaz'>";

while ($row < mysql_num_rows($result)):
$klient = mysql_result($result, $row, 'klient.id');
$lek = mysql_result($result, $row, 'lek.id');
$kolvo = mysql_result($result, $row, 'kolvo');
$id = mysql_result($result, $row++, 'id');
print "<tr><th> $klient <th>$lek <th>$kolvo <th>
<input type='checkbox' name='delete$id' value='$id'>";
endwhile;

print "</table> <input type='button' value='Добавить заказ' onClick="document.location='addZakaz.php'">
<input type="submit" value="delete"><br><br><a href = index.php>перейти на главную</a>";

?>
 
 Top
evgenijj
Отправлено: 04 Июня, 2007 - 17:00:55
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Сказать, что написал бестолково - ничего не сказать.

Есть таблица (что за таблица, какую информацию хранит, какие поля содержит...), в ней есть 2 поля klient и lek. Через них идет связь с таблицами klient и lek соответсвенно (что за связь (внешние ключи?), что за таблицы, какую информацию хранят, какие поля...).
Это вот для одной таблицы - $query="select * from lek, zakaz where lek.id=zakaz.lek"; Может быть, ты и нам объяснишь, ЧТО надо сделать.
С твоих слов ничего понять нельзя. Можно сделать предположение, что речь идет об Интернет-магазине?

Пример.

Есть таблица Orders в которой хранится информация о заказах покупателей Интернет-магазина (аптека).
PHP:
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `orders` (
  3.   `id_order` int(11) NOT NULL auto_increment,
  4.   `order_time` datetime default NULL,
  5.   `id_customer`
  6.   PRIMARY KEY  (`id_order`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
  8.  

id_order - уникальный идентификатор заказа
order_time - время заказа
id_customer - уникальный идентификатор клиента, сделавшего заказ

Таблица Products товарных позиций (лекарства)
PHP:
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `products` (
  3.   `id_prd` int(10) unsigned NOT NULL auto_increment,
  4.   `title` varchar(255) NOT NULL default '',
  5.   `price` float unsigned NOT NULL default '0.0',
  6.   `description` mediumtext NOT NULL,
  7.   `image` varchar(32) NOT NULL default '',
  8.   PRIMARY KEY  (`id_prd`),
  9. ) TYPE=InnoDB;
  10.  

id_prd - уникальный идентификатор товарной позиции
title - наименование
description - описание
................................

Таблица Customers - хранит информацию о клиентах (покупателях)
PHP:
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `customers` (
  3.   `id_customer` smallint(11) NOT NULL auto_increment,
  4.   `email` varchar(32) NOT NULL default '',
  5.   `password` varchar(32) NOT NULL default '',
  6.   `name` varchar(32) NOT NULL default '',
  7.   `surname` varchar(32) NOT NULL default '',
  8.   `country` varchar(32) NOT NULL default '',
  9.   `state` varchar(32) NOT NULL default '',
  10.   `city` varchar(32) NOT NULL default '',
  11.   `zip` varchar(6) NOT NULL default '',
  12.   `address` varchar(255) NOT NULL default '',
  13.   `phone` varchar(32) NOT NULL default '',
  14.   PRIMARY KEY  (`id_user`)
  15. ) TYPE=InnoDB;
  16.  

id_customer - уникальный идентификатор покупателя
................................ ........................

Таблица ordered_items - информация о заказанных товарных позициях
PHP:
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `ordered_items` (
  3.   `id_prd` int(10) unsigned NOT NULL,
  4.   `id_order` int(10) unsigned NOT NULL,
  5.   `quantity` smallint(5) unsigned NOT NULL default '0',
  6.   PRIMARY KEY  (`id_prd`,`id_order`)
  7. ) TYPE=InnoDB;
  8.  

id_prd - уникальный идентификатор товарной позиции
id_order - уникальный идентификатор заказа
................................ ...........................

Внешние ключи:
PHP:
скопировать код в буфер обмена
  1.  
  2. ALTER TABLE `orders`
  3. ADD CONSTRAINT `fk_orders_customers` FOREIGN KEY (`id_customer`) REFERENCES `customers` (`id_customer`);
  4. ALTER TABLE `ordered_items`
  5. ADD CONSTRAINT `fk_ordered_items_products` FOREIGN KEY (`id_prd`) REFERENCES `products` (`id_prd`);
  6. ALTER TABLE `ordered_items`
  7. ADD CONSTRAINT `fk_ordered_items_orders` FOREIGN KEY (`id_order`) REFERENCES `orders` (`id_order`);
  8.  


И вот после этого можно задавать вопрос "А как составить запрос ..."
 
 Top
maximka
Отправлено: 04 Июня, 2007 - 17:14:22
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июнь 2007  


Помог: 0 раз(а)




ладно братишка не ругайся... то, что я бестолочь я и так знаю... лучше посоветуй книжек по mysql... пожалуйста...
Просто я php сегодня в первый раз в жизни увидал, а завтра защита... волнуюсь чутокОднако
 
 Top
evgenijj
Отправлено: 04 Июня, 2007 - 19:46:32
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




maximka пишет:
ладно братишка не ругайся... то, что я бестолочь я и так знаю... лучше посоветуй книжек по mysql... пожалуйста...
Просто я php сегодня в первый раз в жизни увидал, а завтра защита... волнуюсь чутокОднако

Тебе нужны книги не по MySQL, а по SQL.
http://www[dot]books[dot]ru/shop/books/286101
http://www[dot]books[dot]ru/shop/books/489736

Что касается твоей задачи - можно получить данные из 2-х, 3-х и более таблиц.

Получаем общую сумму всех заказов для каждого покупателя (данные берем из 4-х таблиц)
PHP:
скопировать код в буфер обмена
  1.  
  2. SELECT c.id_customer, c.surname, SUM(oi.quantity*p.price) AS total
  3. FROM customers c INNER JOIN orders o ON c.id_customer=o.id_customer
  4. INNER JOIN ordered_items oi ON oi.id_order=o.id_order
  5. INNER JOIN products p ON oi.id_prd=p.id_prd
  6. GROUP BY c.id_customer
  7. ORDER BY SUM(oi.quantity*p.price) DESC
  8.  

 
 Top
-SCHATTEN-
Отправлено: 05 Июня, 2007 - 19:30:09
Post Id



Пользователь


Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006  
Откуда: Оттуда !


Помог: 0 раз(а)




Чес слово мало что понял. Но на один фопрос отвечу.
Цитата:
$query="??????? Чего тут надо написать ?????????";

тут пишется запрос к базе данных. Например
SELECT * FROM players WHERE id IN (99, 100, 101)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB