צפיות
תשובות
פקודת union
מנסה לשלוף ולהציג נתוני סיכומי דברים עם לקוחות עם הפקודה union בפועל הוא מציג לי הרבה יותר רשומות ממה שארני אמור לראות.
האם ניתן להוסיף למשפט select עם union תנאי: where???
והקוד:
set rs21=Server.CreateObject ("adodb.recordset")
sql21="select id,client_id,sikum,sikum_date from kesher_settle_sikumim union select id,client_id,sikum,sikum_date from kesher_settle_sikumimf where client_id=" & client_id rs21.Open sql21,conn,3
'response.write sql21
if rs21.EOF and rs21.BOF then
i=1
else
rs21.movelast
Response.Write "<br><br><div align=right dir=rtl><b><u> סיכומים עם הלקוח </u></b><br><br>"
do until rs21.bOF
day6=day(rs21("sikum_date"))
mon6=month(rs21("sikum_date"))
year6=year(rs21("sikum_date"))
sikum_date=day6 & "/" & mon6 & "/" & year6
Response.Write "<u>" & sikum_date & "</u><br>" & rs21("sikum") & "<br><br>"
rs21.Moveprevious
loop
end if
תודה
16 תשובות
אני לא מבין..
מה אתה מנסה לעשות? לשלוף סיכומים לפי מספר לקוח?
תפרט.
ולמיטב ידיעתי אפשר להשתמש עם where בשאילתת union.
אני אנסה להסביר
מה שקורה זה שצירפתי לטבלה ראשית שמות של לקוחות מטבלה ישנה אשר קיימת להם גם טבלה ישנה של סיכומים.
אני מנסה לחפש ב-2 הטבלאות (החדשה של הסיכומים והישנה של הסיכומים) האם קיימים סיכומים למספר client_id ואז לשלוף אותם.
את הבדיקה הזו אני צריך לעשות ב-2 הטבלאות המצוינות מעלה.
תודה על התגובה.
אז תשתמש בcross join
(בשיטת where clause כי כתיבת cross join בשאילתה לא עובד באקסס).
שימוש בunion לא כ"כ מתאים בקטע הזה.
SELECT id,client_id,sikum,sikum_date FROM kesher_settle_sikumim, kesher_settle_sikumimf WHERE kesher_settle_sikumim.client_id = client_id AND kesher_settle_sikumimf.client_id = client_id
תיקון
SELECT * FROM kesher_settle_sikumim, kesher_settle_sikumimf WHERE kesher_settle_sikumim.client_id = client_id AND kesher_settle_sikumimf.client_id = client_id
קודם שכחתי לכתוב את שמות הטבלאות אחרי הselect, אז תחליף את הכוכבית בשדות שלך.
נגיד ככה:
kesher_settle_sikumim.client_id
לכל השדות שאתה שולף בהתאם
האם * תופס
או שצריך לפרט כרל שדה???
ומה ההבדלים בין join ל-union???
תודה רבה על העזרה.
נותן לי את השגיאה הבאה
The specified field 'client_id' could refer to more than one table listed in the FROM clause of your SQL statement.
הקוד הוא:
set rs21=Server.CreateObject ("adodb.recordset")
sql21="SELECT * FROM kesher_settle_sikumim, kesher_settle_sikumimf WHERE kesher_settle_sikumim.client_id = client_id or kesher_settle_sikumimf.client_id=client_id"
rs21.Open sql21,conn,3
'response.write sql21
if rs21.EOF and rs21.BOF then
i=1
else
rs21.movelast
Response.Write "<br><br><div align=right dir=rtl><b><u> סיכומים עם הלקוח </u></b><br><br>"
do until rs21.bOF
day6=day(rs21("sikum_date"))
mon6=month(rs21("sikum_date"))
year6=year(rs21("sikum_date"))
sikum_date=day6 & "/" & mon6 & "/" & year6
Response.Write "<u>" & sikum_date & "</u><br>" & rs21("sikum") & "<br><br>"
rs21.Moveprevious
loop
end if
rs21.Close
conn.Close
set conn=nothing
%>
בד"כ כדאי לפרט את כל השדות,
אפילו אם הם כולם.
(בחירה שלך)
= פקודה שמשמשת לאיחוד שאילתות.ניתן להשתמש ב או ב all.
= שאילתת איחוד טבלאות.יש לה הרבה סוגים, וניתן לשלב אותה בשאילתות שליפה, עדכון ומחיקה.
אהה
המשך
השגיאה אומרת שהמשתנה client_id הוא גם שם של טבלה בשתי השדות, אתה צריך לכתוב request("client_id")
(אני מניח שהשתמשת בrequest)
הבעייה עכשיו
שהוא חושב המון ותנתקע כאילו.
יש לי בטבלת סיכומים אחת 14,432 רשומות ובטבלה שנייה 8,067 רשומות האם זו הבעייה???
למה אבל אתה שולף הכל ?
מי הסתכל על 22 אלף + רשומות בדף אחד ?
אני לא שולף הכל
בשביל זה ישנו התנאי where
אני מנסה לעקוף אתזהה
ולעשות ע"פ תנאים שאם הוא לא מצא בטבלה הראשונה יחפש בטבלה הישנה ומשום מה הוא לא נותן לי שגיאה אבל הוא גם לא מציג לי למרות שלפי הבדיקה שלי יש נתונים בטבלה השנייה שזה הקוד שלי:
set rs21=Server.CreateObject ("adodb.recordset")
sql21="select * from kesher_settle_sikumim where client_id=" & client_id
rs21.Open sql21,conn,3
'response.write sql21
if rs21.EOF and rs21.BOF then
set rs22=Server.CreateObject ("adodb.recordset")
sql22="select * from kesher_settle_sikumimf where client_id=" & client_id
rs22.Open sql22,conn,3
if rs22.EOF and rs22.BOF then
b=1
else
rs22.movelast
Response.Write "<br><br><div align=right dir=rtl><b><u> סיכומים עם הלקוח </u></b><br><br>"
do until rs22.bOF
day4=day(rs22("sikum_date"))
mon4=month(rs22("sikum_date"))
year4=year(rs22("sikum_date"))
sikum_date=day4 & "/" & mon4 & "/" & year4
Response.Write "<u>" & sikum_date & "</u><br>" & rs22("sikum") & "<br><br>"
rs22.Moveprevious
loop
end if
rs22.close
else
rs21.movelast
Response.Write "<br><br><div align=right dir=rtl><b><u> סיכומים עם הלקוח </u></b><br><br>"
do until rs21.bOF
day6=day(rs21("sikum_date"))
mon6=month(rs21("sikum_date"))
year6=year(rs21("sikum_date"))
sikum_date=day6 & "/" & mon6 & "/" & year6
Response.Write "<u>" & sikum_date & "</u><br>" & rs21("sikum") & "<br><br>"
rs21.Moveprevious
loop
end if
rs21.Close
conn.Close
set conn=nothing
%>
האם מישהו יודע אולי
למה הקוד תנאי לא פועל???
איך אני גורם
לדף אינטרנט להסגר אם לא נגעו בו במהלך זמן מסויים אשר אני יגדיר.
ככה:
<script language="javascript">
setTimeout(10000,'close();')
</script>
10000 זה הזמן במילי שניות
close זה פונקציית סגירה