Toon posts:

[Mysql] Meerdere subqueries bij insert

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een tabel die ik moet vullen met 4 waardes 2 ervan moet ik met subquerys zien te verkrijgen. Hier begint het probleem met 1 subquery lukt het wel :
code:
1
2
3
4
INSERT INTO tblTemp2 (fldID, another_field) 
SELECT tblTemp1.fldOrder_ID, 'static_text_value'
FROM tblTemp1 
WHERE tblTemp1.fldOrder_ID > 100;


Maar bij 2 querys gaat het ni goed vind het eigenlijk ook lelijk die statische variabelen er zo in de querys bij te hacken:

code:
1
2
3
4
5
INSERT INTO tblStats (Referer,Os,Browser,BrowserVersion,OsVersion,Ip) 
SELECT '$this->referer', Osid FROM tblOS WHERE Name = '$this->os',
SELECT Browserid ,'$this->browserversion','$this->osversion','$this->ip' 
FROM tblBrowser 
WHERE Name ='$this->browser';


Weet iemand een oplossing voor dit probleempje

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 16:31

Pelle

🚴‍♂️

Ja, in het goede forum posten om te beginnen.

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Je mag geen twee SELECTs gebruiken in je INSERT, gok ik. Maak dus van de ene SELECT een join over alle gegevens die je nodig hebt, en zorg dat die netjes in 1 tuple uitkomen.

Rustacean


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je doet met die eerste geen subselect, maar een speciale insert-select-constructie. MySQL kan nog steeds geen subselects aan.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Moet het niet gewoon dit zijn:

code:
1
2
3
4
INSERT INTO tblStats (Referer,Os,Browser,BrowserVersion,OsVersion,Ip) 
SELECT '$this->referer', os.Osid, b.Browserid ,'$this->browserversion','$this->osversion','$this->ip' 
FROM tblBrowser b, tblOS os
WHERE b.Name ='$this->browser' AND os.Name='$this->os';


Als zowel deel1 als deel2 van jouw oorspronkelijke query altijd 1 record oplevert, dan zou dit goed moeten gaan.
Als dat niet altijd zeker is, dan heb je wel een probleem.