PDA

View Full Version : complex query



tanha2007
چهارشنبه 18 مهر 1386, 07:56 صبح
سلام.
من میخواهم یک برنامه کتابخانه را تو php درست نمایم ولی دربخش امانت دهی و انتخاب کتاب از combo به مشکل بر خوردم،

$qryDepositedBooks = select("SELECT tblDeposit.bookId AS [Book ID], Last(tblDeposit.depositId) AS [Last Deposited Book], Count(tblDeposit.depositId) AS [Total Deposited Book], tblBook.bookQuantity, tblDeposit.isBookReturn
FROM tblBook LEFT JOIN tblDeposit ON tblBook.bookId = tblDeposit.bookId GROUP BY tblDeposit.bookId, tblBook.bookQuantity, tblDeposit.isBookReturn HAVING (((tblDeposit.isBookReturn)=0))");
$qryDepositedBooksForPersonnel = select("SELECT tblDeposit.*
FROM $qryDepositedBooks LEFT JOIN tblDeposit $qryDepositedBooks.[Last Deposited Book] = tblDeposit.depositId");
$qryBooksReadyForDeposit = select("SELECT tblBook.bookName, tblBook.bookId, $qryDepositedBooks.[Total Deposited Book], $qryDepositedBooksForPersonnel.isBookReturn FROM (tblBook LEFT JOIN $qryDepositedBooks ON tblBook.bookId = $qryDepositedBooks.[Book ID]) LEFT JOIN $qryDepositedBooksForPersonnel ON tblBook.bookId = $qryDepositedBooksForPersonnel.bookId
WHERE ((($qryDepositedBooks.[Total Deposited Book])<([tblBook]![bookQuantity]) Or ($qryDepositedBooks.[Total Deposited Book]) Is Null)) OR ((($qryDepositedBooksForPersonnel.isBookReturn)=1) )
ORDER BY $qryDepositedBooks.[Total Deposited Book] DESC");


بخش combo


<td><select name="cboBook" id="cboBook">

<option></option>
<?php
for($i=0;$i<mysql_num_rows($qryBooksReadyForDeposit);$i++)
{
$b_code=mysql_fetch_assoc($qryBooksReadyForDeposit );
?>
<option value="<?php print($b_code['bookId']); ?>"><?php print($b_code['bookName']); ?></option>
<?php
}
?>

</select>
من نمیدانم مشکل کجاست

tabib_m
چهارشنبه 18 مهر 1386, 12:55 عصر
سلام
به شخصه با دیدن این طرز کد شما (از نظر نظم) سریعا حوصله م سر رفت و بی خیالش شدم :)

لطفا کدتون رو منظم کنید و بعد در تگ [PHP] بذارید که قابل فهم بشه

موفق باشید.

peyman1987
چهارشنبه 18 مهر 1386, 14:12 عصر
دوست من شما مطمئنین با PHP برنامه نویسی میکنین. من بین این سینتکس و سینتکس زبان PHP هیچ شباهتی نمیبینم بجز $ پشت اسم متغیر!!!!!!

tanha2007
چهارشنبه 18 مهر 1386, 14:12 عصر
سلام دوست محترم، تشکر از رهنمایی شما:



<body>
<?php
include ("../../ControlPanel/General/database.php");
connect();
$sqlpersonnel = select("SELECT personnelId, personnelCode, personnelName, personnelFamily FROM tblpersonnel ORDER BY personnelCode");
//$sqlbook = select("SELECT bookId, bookCode, bookName FROM tblbook ORDER BY bookCode");

$qryDepositedBooks = select("SELECT tblDeposit.bookId AS [Book ID], Last(tblDeposit.depositId) AS [Last Deposited Book], Count(tblDeposit.depositId) AS [Total Deposited Book], tblBook.bookQuantity, tblDeposit.isBookReturn
FROM tblBook LEFT JOIN tblDeposit ON tblBook.bookId = tblDeposit.bookId GROUP BY tblDeposit.bookId, tblBook.bookQuantity, tblDeposit.isBookReturn HAVING (((tblDeposit.isBookReturn)=0))");
$qryDepositedBooksForPersonnel = select("SELECT tblDeposit.*
FROM $qryDepositedBooks LEFT JOIN tblDeposit $qryDepositedBooks.[Last Deposited Book] = tblDeposit.depositId");
$qryBooksReadyForDeposit = select("SELECT tblBook.bookName, tblBook.bookId, $qryDepositedBooks.[Total Deposited Book], $qryDepositedBooksForPersonnel.isBookReturn FROM (tblBook LEFT JOIN $qryDepositedBooks ON tblBook.bookId = $qryDepositedBooks.[Book ID]) LEFT JOIN $qryDepositedBooksForPersonnel ON tblBook.bookId = $qryDepositedBooksForPersonnel.bookId
WHERE ((($qryDepositedBooks.[Total Deposited Book])<([tblBook]![bookQuantity]) Or ($qryDepositedBooks.[Total Deposited Book]) Is Null)) OR ((($qryDepositedBooksForPersonnel.isBookReturn)=1) )
ORDER BY $qryDepositedBooks.[Total Deposited Book] DESC");

disConnect();
?>
<form id="frmDefineDeposit" name="frmDefineDeposit" method="post" action="saveDeposit.php">
<table width="1000" border="0" align="center" cellpadding="3" cellspacing="3">
<tr>
<td width="256"><label>Select Personnel Info :</label>
&nbsp;</td>
<td width="523"><select name="cboPersonnel" id="cboPersonnel">

<option></option>
<?php
for($i=0;$i<mysql_num_rows($sqlpersonnel);$i++)
{
$p_code=mysql_fetch_assoc($sqlpersonnel);
$p_info = $p_code['personnelCode'] . " - " . $p_code['personnelName'] . " - " . $p_code['personnelFamily'];
?>
<option value="<?php print($p_code['personnelId']); ?>"><?php print($p_info); ?></option>
<?php
}
?>

</select>
<span class="style1">*</span></td>
</tr>
<tr>
<td><label>Select Book Info :</label>
&nbsp;</td>
<td><select name="cboBook" id="cboBook">

<option></option>
<?php
for($i=0;$i<mysql_num_rows($qryBooksReadyForDeposit);$i++)
{
$b_code=mysql_fetch_assoc($qryBooksReadyForDeposit );
?>
<option value="<?php print($b_code['bookId']); ?>"><?php print($b_code['bookName']); ?></option>
<?php
}
?>

</select>
<span class="style1">*</span></td>
</tr>
<tr>
<td><label>Date Received :</label>
&nbsp;</td>
<td><input name="txtDateReceived" type="text" id="txtDateReceived" size="40" />
<span class="style1">*</span></td>
</tr>
<tr>
<td><label>Date Returned :</label>
&nbsp;</td>
<td><input name="txtDateReturned" type="text" size="40" id="txtDateReturned" /></td>
</tr>
<tr>
<td><label>Select Type of Guarantee :</label>
&nbsp;</td>
<td><select name="cboGuarantee" id="cboGuarantee">
<option></option>
<option value="Library Card">Library Card</option>
<option value="ID Card">ID Card</option>
<option value="Student Card">Student Card</option>
<option value="Passport">Passport</option>
</select>
</td>
</tr>
<tr>
<td><label>Comment :</label>
&nbsp;</td>
<td><textarea name="txtComment" cols="80" rows="6" id="txtComment"></textarea></td>
</tr>
<tr>
<td><input name="cmdDepositBook" type="button" class="cmd" id="cmdDepositBook" onclick="checkForm();" value="Deposit Book"/>
<span class="style1">
<input name="cmdBack" type="button" id="cmdBack" value="Back Main" onclick="window.location.href='../../ControlPanel/main.php';" class="cmd"/>
</span></td>
<td>&nbsp;</td>
</tr>
</table>
</form>
<?php
if(isset($_GET['OK']))
{
?>
<script language="javascript"> alert('Book deposited successfully...'); </script>
<?php
}
if(isset($_GET['notOK']))
{
?>
<script language="javascript"> alert('Sorry, Book did deposited!!!'); </script>
<?php
}
?>
</body>



دوستان محترم:
من میخواهم کویری های این فایل ضمیمه را با پی اچ پی بسازم و بعدا فیلد کتاب را داخل کامبو قرار دهم

tanha2007
چهارشنبه 25 مهر 1386, 09:46 صبح
سلام دوستان،
لطفا کسی مرا درین قسمت نیز کمک نماید...الان چند روز که نتوانسته ام این مشکل را بر طرف نمایم....

tanha2007
پنج شنبه 26 مهر 1386, 14:33 عصر
سلام
به شخصه با دیدن این طرز کد شما (از نظر نظم) سریعا حوصله م سر رفت و بی خیالش شدم :)

لطفا کدتون رو منظم کنید و بعد در تگ [php] بذارید که قابل فهم بشه

موفق باشید.


سلام دوست عزیز،
من کد را کاملا پست نمودم لطفا حالا مرا رهنمایی نمایید....

tabib_m
پنج شنبه 26 مهر 1386, 17:32 عصر
به شخصه با دیدن این طرز کد شما (از نظر نظم) سریعا حوصله م سر رفت و بی خیالش شدم :)

لطفا کدتون رو منظم کنید و بعد در تگ [php] بذارید که قابل فهم بشه
..........

tanha2007
شنبه 28 مهر 1386, 07:38 صبح
سلام دوستان،
من واقعا نمیدونم چطوری این کد را بین php قرار دهم، چون بین php قرار دارد، بهر حال کسی لطف نموده مرا درین زمینه همکاری نماید...
من فقط میخواهم یک کویری را که در یک متغیر قرار دارد در یک کویری دیگر استفاده نمایم...طوریکه در کدی بالای پست نمودم...
تشکر

tanha2007
یک شنبه 29 مهر 1386, 08:40 صبح
..........

سلام دوست عزیز...
من این راپست نمودم امیدوارم این واضح باشد...
من فقط bookName را در لیست باز شو میخواهم ببینم



<body>
<?php
//Connection to the server and database
$serverName = "localhost";
$userName = "root";
$password = "";
$databaseName = "computerscience";
$con = mysql_connect($serverName,$userName,$password) or die("Unable to connect to Server $serverName");
mysql_select_db($databaseName, $con) or die("Unable to select Database $databaseName");
//First Query
$strSql = "SELECT tblDeposit.bookId AS [Book ID], Last(tblDeposit.depositId) AS [Last Deposited Book], Count(tblDeposit.depositId) AS [Total Deposited Book], tblBook.bookQuantity, tblDeposit.isBookReturn
FROM tblBook LEFT JOIN tblDeposit ON tblBook.bookId = tblDeposit.bookId GROUP BY tblDeposit.bookId, tblBook.bookQuantity, tblDeposit.isBookReturn HAVING (((tblDeposit.isBookReturn)=0))";
$qryDepositedBooks = mysql_query($strSql, $con);

//Second Query
$strSql2 = "SELECT tblDeposit.* FROM $qryDepositedBooks LEFT JOIN tblDeposit $qryDepositedBooks.[Last Deposited Book] = tblDeposit.depositId";
$qryDepositedBooksForPersonnel = mysql_query($strSql2, $con);

//Third Query
$strSql3 = "SELECT tblBook.bookName, tblBook.bookId, $qryDepositedBooks.[Total Deposited Book], $qryDepositedBooksForPersonnel.isBookReturn FROM (tblBook LEFT JOIN $qryDepositedBooks ON tblBook.bookId = $qryDepositedBooks.[Book ID]) LEFT JOIN $qryDepositedBooksForPersonnel ON tblBook.bookId = $qryDepositedBooksForPersonnel.bookId WHERE ((($qryDepositedBooks.[Total Deposited Book])<([tblBook]![bookQuantity]) Or ($qryDepositedBooks.[Total Deposited Book]) Is Null)) OR ((($qryDepositedBooksForPersonnel.isBookReturn)=1) ) ORDER BY $qryDepositedBooks.[Total Deposited Book] DESC";
$qryBooksReadyForDeposit = mysql_query($strSql3, $con);
?>
<form id="frmDefineDeposit" name="frmDefineDeposit" method="post" action="saveDeposit.php">
<table>
<tr>
<td><label>Select Book Info :</label></td>
<td><select name="cboBook" id="cboBook">
<option></option>
<?php
for($i=0;$i<mysql_num_rows($qryBooksReadyForDeposit);$i++)
{
$b_code=mysql_fetch_assoc($qryBooksReadyForDeposit );
?>
<option value="<?php print($b_code['bookId']); ?>"><?php print($b_code['bookName']); ?></option>
<?php
}
?>
</select>
</td>
</tr>
</table>
</form>
</body>

tabib_m
یک شنبه 29 مهر 1386, 19:08 عصر
سلام
حالا شد یه چیزی :) ( ببخشید که گیر دادم، ولی خوب مادامی که سؤال کننده همراهی نکنه، به راحتی نمیشه کمکش کرد:) )

کاری به کوئریت ندارم، چون خودت میتونی ببینی که نتیجه مطلوب داره یا نه! (؟)

اما در مورد این کد:


<?php
for($i=0;$i<mysql_num_rows($qryBooksReadyForDeposit);$i++)
{
$b_code=mysql_fetch_assoc($qryBooksReadyForDeposit );
?>
<option value="<?php print($b_code['bookId']); ?>"><?php print($b_code['bookName']); ?></option>
<?php
}
?>

تبدیلش کن به این حالت:


<?php
while($b_code=mysql_fetch_assoc($qryBooksReadyForD eposit)){
?>
<option value="<?=$b_code['bookId'];?>"><?=$b_code['bookName']; ?></option>
<?php
}
?>


این کد، نتیجه ای که میخوای رو میده، فقط باید کوئریت درست باشه!!

موفق باشید.

tanha2007
دوشنبه 30 مهر 1386, 07:40 صبح
تشکر یک دنیا ازینکه پاسخ دادید...ولی مشکل کلی من در قسمت کویری است، چون واقعا نمیدونم چگونه آن کویری را بسازم...اگر لطف نمایید مرادران زمینه همکاری نمایید

tabib_m
دوشنبه 30 مهر 1386, 16:36 عصر
خوب شما ساختار جدولت، به همراه نتیجه ای که میخوای ازش بگیری رو اینجا بذار...

tanha2007
سه شنبه 01 آبان 1386, 07:51 صبح
سلام.
من جداول را قبلا ضمیمه نمودم، ولی بهر حال دوباره میگذارم...من فقط لیست کتاب های که به امانت داده نشده است لازم دارم...فرض کنید من از یک کتاب دو جلد دارم، در صورتیکه هر دو جلد به امانت داده شود دیگر در لیست بازشو نام آن کتاب نمایش داده نشود...

tabib_m
سه شنبه 01 آبان 1386, 16:52 عصر
tanha2007 عزیز. لطفا ساختار جدولی که میخواید ازش اطلاعات بردارید رو اینجا بذارد (یعنی دقیقا فقط همون جدول، من -و دیگر دوستان- علم غیب ندارم که بدونم کدوم جدول، جدول مد نظر شماست، و کدام فیلد تعیین کننده ی امانت داده شده بودن اون کتاب هست.)

نیازی هم به ضمیمه نیست، بهتره که کد ساختار رو اینجا توی تگ [CODE] بذارید.
البته فیلدی که تعیین کننده ی امانت هست رو هم بگید کدوم هست.
ممنون.