Ja zoiets vermoed ik ook al. Hij gaat, denk ik, een relatie zoeken waarmee de where clause overeenstemt. Dus hij zoekt ook in de lege tabel een record met ID='2', die dus niet bestaat en dus oneindig lang gaat zoeken?quote:Op dinsdag 3 april 2012 10:07 schreef Scorpie het volgende:
Volgens mij is je gebundelde query niet hetzelfde als je drie verschillende queries.
Dit.quote:Op dinsdag 3 april 2012 10:07 schreef Scorpie het volgende:
Volgens mij is je gebundelde query niet hetzelfde als je drie verschillende queries.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | SELECT TOP 1 t.IETS1, t.IETS2 FROM TABEL1 AS t WHERE t.ID='2' SELECT TOP 1 q.IETS3 FROM TABEL2 AS q WHERE q.ID='2' SELECT TOP 1 s.IETS4 s.IETS5 s.IETS6 FROM TABEL3 AS s WHERE s.ID='2' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | SELECT veld1 veld2 FROM tabel1 WHERE id='2' LIMIT 1 UNION SELECT veld3 FROM tabel2 WHERE id='2' LIMIT 1 UNION SELECT veld4 veld5 veld6 FROM tabel3 WHERE id='2' LIMIT 1 |
quote:* The number of columns in each SELECT statement has to be the same .
* The data type of the column in the column list of the SELECT statement must be the same or at least convertible.
I know maar het was even handig nu met copy-paste en LIMIT wordt in mijn geval, MS SQL server, niet ondersteund. Maar evengoed datgene wat je post heb ik dus geprobeerd en werkt niet omdat het aantal kolommen niet gelijk is.quote:Op dinsdag 3 april 2012 10:16 schreef stefanhaan het volgende:
[..]
Dit.
Allereerst je tabel namen in een enkele query is nergens voor nodig. Dus maak het je niet onnodig lastig dat je alle velden vanuit je query via t.** moet benaderen maar gewoon **.
De TOP tag werkt alleen in SQL server (Dacht ik) dus kan je beter LIMIT gebruiken doet exact hetzelfde en is vrijwel overal ondersteunt.
[ code verwijderd ]
=>
[ code verwijderd ]
Alleen hou deze restricties in je achterhoofd:
[..]
Gedaan, had geen effect, hoewel ik wel idd dacht dat dit zou werken.quote:
Dan zou je net zo goed de 3 query's afzonderlijk kunnen doen of via een JOIN. Maar ik weet niet waarvoor je het wil gebruiken dus wat meer info misschien?quote:* The number of columns in each SELECT statement has to be the same .
* The data type of the column in the column list of the SELECT statement must be the same or at least convertible.
Klopt de drie queries kan ik ook afzonderlijk doen. Alleen wil ik het netwerkverkeer minimaliseren. Wat ik nu eerst dus wil doen is gewoon de resultaten van de 3 queries combineren, achter elkaar zetten dus. Zodat ik het resultaat daarna in 1 brok wordt verstuurd i.p.v. 3 brokken. Daarna gooi ik de boel nog in een storedprocedure.quote:Op dinsdag 3 april 2012 10:24 schreef stefanhaan het volgende:
Daarom poste ik ook dit.
[..]
Dan zou je net zo goed de 3 query's afzonderlijk kunnen doen of via een JOIN. Maar ik weet niet waarvoor je het wil gebruiken dus wat meer info misschien?
Sowieso als je alleen de top 5 resultaten terug laat sturen. Vind er vrijwel geen netwerkverkeer plaats omdat je maar 15 rows retourneerd ipv 15000 bv. Dus is het in dit geval wel verwaarloosbaar.quote:Op dinsdag 3 april 2012 10:33 schreef Dale. het volgende:
[..]
Klopt de drie queries kan ik ook afzonderlijk doen. Alleen wil ik het netwerkverkeer minimaliseren. Wat ik nu eerst dus wil doen is gewoon de resultaten van de 3 queries combineren, achter elkaar zetten dus. Zodat ik het resultaat daarna in 1 brok wordt verstuurd i.p.v. 3 brokken. Daarna gooi ik de boel nog in een storedprocedure.
Ik had net ook nog geprobeerd met een FULL OUTER JOIN maar daarbij zelfde resultaat.
True maar niet als er grofweg 10.000 pc's dit iedere 5 seconde gaan doenquote:Op dinsdag 3 april 2012 10:36 schreef stefanhaan het volgende:
[..]
Sowieso als je alleen de top 5 resultaten terug laat sturen. Vind er vrijwel geen netwerkverkeer plaats omdat je maar 15 rows retourneerd ipv 15000 bv. Dus is het in dit geval wel verwaarloosbaar.
Zelfs dan valt het nog mee mits goede server.quote:Op dinsdag 3 april 2012 10:38 schreef Dale. het volgende:
[..]
True maar niet als er grofweg 10.000 pc's dit iedere 5 seconde gaan doen
Die is er niet maar goed krijg ik nog een antwoord of blijft dit een ja-dit-ja-zus gesprek hahaha want ik wil de resultaten toch combineren.quote:Op dinsdag 3 april 2012 10:41 schreef stefanhaan het volgende:
[..]
Zelfs dan valt het nog mee mits goede server.
quote:
quote:en werkt niet omdat het aantal kolommen niet gelijk is.
Okee! En ja sorry ik heb het database schema niet gemaakt maar ander vraagje... Ik hou het dus gewoon bij 3 queries... Maar kan ik dan de resultaten in sql makkelijk mergen?quote:Op dinsdag 3 april 2012 10:50 schreef GlowMouse het volgende:
Andere oplossingen worden echt lelijk
hoofdletters als tabel-/kolomnamen zijn echt lelijk
SELECT t.IETS1,t.IETS2,q.IETS3,q.IETS4
FROM TABEL1 AS t
LEFT JOIN TABEL 2 AS q ON(q.ID=2)
WHERE t.ID=2
LIMIT 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ----------- | a1 | a2 | ----------- ---------------- | b1 | b2 | b3 | ---------------- ------ | c1 | ------ Wordt ------------------------------- | a1 | a2 | b1 | b2 | b3 | c1 | ------------------------------- |
Dat zou idd werken helaas merk ik net dat ik dan nog tegen een conversie fout aanloopquote:Op dinsdag 3 april 2012 10:54 schreef GlowMouse het volgende:
Het is mooier om, als je maar één kolom hebt en bij een andere twee kolommen, toch UNION te gebruiken en dan ipv select veld1 te doen: select veld1,0
Oke thanks. Dan gewoon maar een loopje en in de programmeertaal mergen.quote:Op dinsdag 3 april 2012 11:35 schreef GlowMouse het volgende:
Nee dat kan niet. De methode van joinen is het enige alternatief op union dat ik kan bedenken.
1 2 | $var = false; $arr = array("key" => $var['key']); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | SELECT TOP 1 t.iets1, t.iets2, NULL FROM tabel1 AS t WHERE t.id=2 UNION ALL SELECT TOP 1 q.iets3, NULL, NULL FROM tabel2 AS q WHERE q.id=2 UNION ALL SELECT TOP 1 s.iets4 s.iets5 s.iets6 FROM tabel3 AS s WHERE s.id=2 |
Dat lijkt me wel de beste oplossing. En het simpelst om te implementeren.quote:Op donderdag 5 april 2012 11:48 schreef Catch22- het volgende:
koppeltabel maken?
product_id | accessoire_id
?
en dan een gecombineerde sleutel maken
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |