2009-07-10 16 views
8
SELECT * FROM menu WHERE item_id = 1 OR item_id = 2 OR item_id = 3; 

उपरोक्त विवरण 3 पंक्तियां देता है। लेकिन नीचे दिया गया कथन केवल 2 पंक्तियां देता है।MySQL तालिका -> क्या आप एक ही पंक्ति में एक ही पंक्ति को कई बार वापस कर सकते हैं?

SELECT * FROM menu WHERE item_id = 1 OR item_id = 1 OR item_id = 2; 

और मुझे समझ में आता है कि क्यों, लेकिन item_id 1 को दो बार वापस करने के लिए मजबूर करने का कोई तरीका है ???

जो मैं चाहता का उदाहरण लौटे करने के लिए किया जा:

आईडी -> 1 चिप्स € 2.50
आईडी -> 1 चिप्स € 2.50
आईडी -> 2 कोक € 1.60
---- ----------------
कुल € 6,60

उत्तर

5

आप किसी अन्य मेज पर शामिल हो सकते हैं, उदाहरण के

SELECT * FROM menu 
INNER JOIN order_items ON menu.item_id = order_items.item_id 
WHERE order_id = 123; 

या सिर्फ अपने आवेदन में उन्हें नकल के लिए।

आपको जो भी मांग रहे हैं उसे करने की ज़रूरत नहीं है।

+0

हाँ, कोई भी संस्कार नहीं है, php के साथ इसे डुप्लिकेट करना आसान है। बहुत बहुत धन्यवाद! –

+3

Fwiw, मैं इस धागे पर भटक गया क्योंकि मुझे जनसंख्या स्क्रिप्ट के लिए कई पंक्ति प्रतियां उत्पन्न करने की आवश्यकता है। उपरोक्त से डिफ उपयोग-मामला, लेकिन कभी-कभी यह आवश्यक होता है, एप्लिकेशन-स्तरीय माइग्रेशन तक पहुंच के बिना। –

4

आप इस तरह कुछ करने के लिए होता है:

SELECT * FROM menu WHERE item_id = 1 
UNION ALL 
SELECT * FROM menu WHERE item_id = 1 
UNION ALL 
SELECT * FROM menu WHERE item_id = 2 
0

आपको ऐसा करने के लिए डमी रोसेट उत्पन्न करने का एक तरीका चाहिए, और MySQL में इसकी कमी है।

आप निम्न कर सकते हैं:

SELECT * 
FROM (
     SELECT 1 AS x 
     UNION ALL 
     SELECT 1 AS x 
     UNION ALL 
     SELECT 2 AS x 
     ) dummy 
JOIN menu 
ON  menu.id = dummy.x 
+0

ऐसी परिस्थितियों से निपटने के लिए बहुत आसान चाल +1 –

0

उपयोग यूनियनों:

SELECT * FROM menu WHERE item_id = 1 
    UNION ALL 
SELECT * FROM menu WHERE item_id = 1 
    UNION ALL 
SELECT * FROM menu WHERE item_id = 2 
0

कारण है कि आप एक ही बात के लिए दो बार डाटाबेस क्वेरी करने के लिए चाहते हैं। बस एक बार पूछताछ करें और प्रोग्रामिंग भाषा का उपयोग कर (पंक्तियां जोड़ें या दो पंक्तियों को दो बार प्रदर्शित करें) में संशोधन करें।

कुछ की तरह

id -> 1 Chips €2.50 X 2 
id -> 2 Coke €1.60 
-------------------- 
Total €6.60 
0

पहले जवाब गलत लग रहा है। यह बाहरी पहले तालिका के रूप में order_items साथ शामिल होने के छोड़ दिया जाना चाहिए ...

SELECT * FROM order_items oi 
left outer JOIN menu m 
ON oi.item_id = m.item_id 
WHERE order_id = 123; 
1

तुम सिर्फ एक अपने उपनाम, उदा के बीच में शामिल होने बनाने

select top 5 * from item a, item b where a.itemid =1 

यह निम्न जैसे डेटा प्रिंट करेगा।

1 abc 
1 abc 
1 abc 
1 abc 
1 abc 

आशा है, आप समझेंगे।

संबंधित मुद्दे