עבודה עם ריבוי תוצאות בשאילתת משנה - postgressql
-
עשיתי שאילתת משנה לשאילתא, אבל השאילתא החזירה יותר מתוצאה אחת, ומבחינת השאילתא (האב) זה נחשב שגיאה.
אני באמת צריך לקבל נתונים בשאילת האב עבור כל אחת מהתוצאות המוחזרות בשאילתת המשנה (במילים אחרות, שאם יש 3 תוצאות, אז מבחינתי ששאילתת האב תבצע 3 שאילתות).השאלה - האם יש אפשרות מובנית של LOOP על התוצאות של שאילתת המשנה, או שאני מוכרח לעשות לולאה ידנית בשאילתת האב, להחזרת כל התוצאות (מה שאומר (טכנית) גם ריבוי פניות לDB).
תודה רבה.
-
האם זה נכון להשתמש באופרטור IN בשאילתת האב?
-
אתה יכול לעשות שאילתה חכמה עם JOIN, או לעבוד עם שאילתות משנה.
וכן IN משאילתות משנה זה דרך מקובלת. -
חוץ מזה מה השגיאה במקרה של תוצאות מרובות?
אתה נראה לי אמור לעבוד במקרה כזה עם http://php.net/manual/en/mysqli.multi-query.php.
חייבת להיות דרך כן לעבוד עם סטי תוצאות מרובות. -
pg_query(): Query failed: ERROR: more than one row returned by a subquery used as an expression in <b>/var/www/html/model/profiles.php</b> on line <b>76</b><br />
-
השגיאה הזו אומרת משהו אחר (ממה שחשבתי עכ"פ), היא אומרת שתת השאילתה מחזירה שורות מרובות, והיא בהקשר בו היא אמורה להחזיר שורה בודדת.
-
כן, ולמעשה אני צריך תוצאות בשאילתת אב עבור כל אחת מהתוצאות של שאילתת המשנה.
והשאלה כנ"ל אם IN זה אופציה טובה.
תודה. -
@chagold אמר בעבודה עם ריבוי תוצאות בשאילתת משנה - postgressql:
כן, ולמעשה אני צריך תוצאות בשאילתת אב עבור כל אחת מהתוצאות של שאילתת המשנה.
והשאלה כנ"ל אם IN זה אופציה טובה.
תודה.כן. וגם JOIN.
ואם אתה רוצה "לדבר תכלס" תביא דוגמת שאילתה. -
@dovid אמר בעבודה עם ריבוי תוצאות בשאילתת משנה - postgressql:
כל
$result_profiles = pg_query($conndb->condb(), "select * from Sharesprofils WHERE id_profil = (select id from profils WHERE id_Account = $nick);");
-
יאהוו לא פיללתי סיפור כה פשוט. בשביל זה יש JOIN!
select * from Sharesprofils LEFT JOIN profils ON id_profil = profils .id WHERE profils.id_Account = $nick