הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 09-12-10, 12:56   # 1
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

שאילתת SQL מורכבת

יש לי בעיה עם איך לשלוף מידע מסויים ב-SQL,
אני צריך לשלוף שורות מהבסיס נתונים שכוללות רק ערכים שאני נותן לו, אבל לא חייב שזה יהיה מורכב מכולם, ואין אפשרות שיהיה מורכב מיותר.
לדוגמא, חשבתי לעבוד עם ID שייצג לי את מה שאני צריך לשלוף, ואני שומר את כל ה-ID שאני משתמש בהם בשורה מסויימת בצורה כזאת:
קוד:
|234||12||653||7841||4636|
כלומר כל ID תחום ב-||

עכשיו כמו שאמרתי אני צריך לדוגמא לשלוף את כל האיידיים האלה, אבל אני נותן לו עוד איידיים חוץ מאלה. לדוגמא השאילתה צריכה להיות משהו כמו:
קוד:
|234||411||12||84441||11||653||7841||31||4636|
למישהו יש מושג איך אני עושה את זה, עדיף רק ב-SQL (אם זה עם PHP אני יכול להסתדר אבל זה יצא ממש כבד לשלוף ככה מאות שורות)

תודה מראש.
  Reply With Quote
ישן 09-12-10, 13:13   # 2
Sagi
חבר וותיק
 
Sagi's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 33
הודעות: 1,745
שלח הודעה באמצעות ICO אל Sagi

Sagi לא מחובר  

דבר ראשון תוציא ככה
HTML קוד:
234,411,12,84441,11,653,7841,31,4636
לאחר מכן תכניס לשאילתא IN
PHP קוד:
SELECT FROM tbl WHERE id IN($X
  Reply With Quote
ישן 09-12-10, 13:38   # 3
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

חשבתי על IN, לא נראה לי שזה יעבוד.
שוב - תחשוב שאני מביא לו פשוט אוסף של איידיים (הם בעקרון לא אמורים להתקבל מהבסיס נתונים אלא מהמשתמש) ומתוכם הוא צריך להחזיר לי רק שורות שהאיידיים שלהם הם חלק מהאיידיים שהבאתי לו.

אם אני משתמש ב-IN כשהערך IDS (הרשימת ID) הוא רק חלק ולא מסודר באותה צורה של ה-IN זה יעבוד גם?
כאילו משהו כזה:
קוד:
SELECT * FROM tbl WHERE '1,2,4,7' IN('2,3,1,7,6,4,9')
  Reply With Quote
ישן 09-12-10, 13:58   # 4
Haimz
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Sep 2010
הודעות: 1,221

Haimz לא מחובר  

PHP קוד:
<?php
    $row 
= array("234","411","12","84441","11","653","7841","31","4636");
    
$imp implode(","$row);
    
$query "SELECT * FROM `table` WHERE `id` IN(" .$imp")";
    
$select mysql_query($query) or die ("SQL ERROR");
?>
תנסה את זה , לא בדקתי
  Reply With Quote
ישן 09-12-10, 19:24   # 5
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

תודה, אני אבדוק את זה.
בתכלס עדיין לא התחלתי לעבוד על המערכת, פשוט חשבתי על דרך לעשות משהו שם.
  Reply With Quote
ישן 09-12-10, 20:22   # 6
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

ניסיתי - זה לא בדיוק עובד
קוד:
SELECT * FROM TST WHERE ContIDs IN('1','2','4','7')
יש בטבלה TST 2 שורות, ה-ContIDs שלהם זה:
'1,2,4,7,8,3,11,'
'1,2,3,4,7,5,6,10,8,9,11,12,'

ניסיתי ב-IN לרשום פשוט '1,2,3,4,5,6,7,8,9,10,11,12', ניסיתי '1,2,4,7' (שזה ההתחלה של המבנה של השורה הראשונה) וכמו שעכשיו. הם לא עובדים..
  Reply With Quote
ישן 09-12-10, 20:30   # 7
Haimz
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Sep 2010
הודעות: 1,221

Haimz לא מחובר  

אם המטרה שלך זה לשלוף משורה שיש בה: '1,2,3,4,7,5,6,10,8,9,11,12,'
תעשה ככה:
PHP קוד:
mysql_query("SELECT * FROM `TST` WHERE `ContIDs` = '1,2,3,4,7,5,6,10,8,9,11,12,'"); 
  Reply With Quote
ישן 09-12-10, 20:34   # 8
Itay
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 564

Itay לא מחובר  

אחי אתה ממש לא בכיוון. תקרא שוב את מה שרשמתי בהתחלה..
תסתכל מה הגבתי לשגיא על העניין של ה-IN
  Reply With Quote
ישן 09-12-10, 23:33   # 9
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 31
הודעות: 4,086

BlueNosE לא מחובר  

לדעתי? אתה יכול לעשות כזה דבר: "WHERE id LIKE '%|23|%' OR ID LIKE '%|11|%' OR id LIKE ...."
ככה השליפה תתבצע בכל מצב כמו שצריך. רק אתה צריך להכין את המחרוזת כמו שצריך.
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter
  Reply With Quote
ישן 10-12-10, 00:39   # 10
Daniel
אחראי פורום
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
הודעות: 2,875

Daniel לא מחובר  

מה שעומר אמר לפי דעתי כאן זה הפתרון שכותב האשכול באמת חיפש,

הבעייה היחידה שזאת שאילתה שתגזול הרבה מאוד משאבים.

איתי - מה שאתה מבקש זאת בקשה שלא משנה איך תנסה לבצע אותה - היא תעלה יחסית הרבה משאבים. אם תפרט לנו בדיוק מה אתה צריך (לדוגמא: "אני בונה מערכת פורומים ואני רוצה שיהיה לי את כל התגובות לאשכול בשורה אחת במסד") נוכל אולי לכוון אותך בכלל לבצע את הדבר עצמו מזווית אחרת יותר טובה, יעילה ונוחה - ונוכל לראות אולי איך אפשר להשתמש בנתונים שונים כדי לבצע את הפעולה יותר ביעילות ובקלות.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 14:38.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ