Toon posts:

[(My)SQL] DELETE * FROM where `eersteveld`(?) = iets

Pagina: 1
Acties:

Verwijderd

Topicstarter
Is het mogelijk in MySQL een query uit te voeren als volgt:

code:
1
DELETE * FROM [a] WHERE [b] = [c]


Ik weet de waarden [a] en [c], echter [b] niet.
Ik weet wel van [b] dat het altijd het eerste veld (-en een unique veld) van de tabel is.

Kan ik [b] laten invullen door (My)SQL zelf? Wellicht met behulp van een SQL-functie? Of moet ik het vooraf laten gaan, zoals nu het geval is, door wat PHP code?

[ Voor 14% gewijzigd door Verwijderd op 04-04-2005 10:49 ]


  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
je kunt wel dingen in laten vullen dmv een gecorroleerde subquery, maar waarom weet je b niet, als je die niet weet heb je er toch niks aan.

http://Compusmurf.xs4all.nl


  • GlowMouse
  • Registratie: November 2002
  • Niet online
En bij verwijderen worden altijd alle rijen verwijderd. De correcte syntax is dus:
code:
1
DELETE FROM [a] WHERE [b] = [c]

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 07-05 22:49

curry684

left part of the evil twins

Verwijderd schreef op maandag 04 april 2005 @ 10:48:
Is het mogelijk in MySQL een query uit te voeren als volgt:

code:
1
DELETE * FROM [a] WHERE [b] = [c]
Je weet dat die * obsolete is en niet in iedere DBMS werkt?
Ik weet de waarden [a] en [c], echter [b] niet.
Ik weet wel van [b] dat het altijd het eerste veld (-en een unique veld) van de tabel is.
Waarom klinkt dit me in de oren als een slechte normalisatie?

Anyway zou ik het dan alsnog met een lookup table doen (table => field), maar de vraagstelling hoort in een nette database niet thuis imho.

Professionele website nodig?


Verwijderd

Deleten in een database? Weet je het zeker?

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 22:27

The Eagle

I wear my sunglasses at night

Kan vrij simpel:

code:
1
2
DELETE FROM <tabel a> WHERE <veld 1> in list 
(SELECT <veld 1> FROM <tabel B> where .........)


etc etc. :)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

The_Eagle schreef op maandag 04 april 2005 @ 11:48:
Kan vrij simpel:

code:
1
2
DELETE FROM <tabel a> WHERE <veld 1> in list 
(SELECT <veld 1> FROM <tabel B> where .........)
Note: subqueries werken pas vanaf MySQL 4.1! ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Het kan niet. Als je de veldnaam van je tabel niet weet, dan kan je gewoon geen bewerkingen er op doen. Je kan niet de veldnaam via een of andere subquery "erin laten zetten".

Wil je zoiets toch automatiseren dan zal je de tabel-specificatie op moeten vragen en de naam van de eerste kolom daar uit moeten halen.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Kan wel, in MySQL 5? INFORMATION_SCHEMA, hoofdstuk 21, tabel COLUMNS, kolom ORDINAL_POSTION en COLUMN_NAME.

Evengoed is het natuurlijk ranzig. Kolomvolgorde is eigenlijk een implementatie detail.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
Korte toelichting;

Ik werk momenteel binnen een structuur waarin o.a. een 20-tal tabellen worden gebruikt die allen dezelfde opbouw hebben (d.w.z. beginnend met een unique id (het betreffende-) field, een name-field, en vervolgens een x-aantal detail-fields).

Voor die tabellen, die ieder een bepaalde entitie vertegenwoordigen, was ik bezig een pagina te ontwerpen die middels twee gegevens een DELETE query moest uitvoeren, te weten a) de tabelnaam en b) het unieke id, daar dit de twee waarden waren die ik al beschikbaar had- en vandaar het openen van dit topic met de betreffende vraag.

Kortom; ik wou voordeel trekken uit het feit dat ik het gegeven heb dat de tabellen van een enigzins statische aard zijn.

Echter, ik heb het inmiddels toch buiten SQL om moeten oplossen door enkele andere beperkingen en wel met functies van php. Bedankt in ieder geval voor jullie reacties, en @GlowMouse en @Curry684; het *-teken dat in mijn pseudocode te vinden was was in mijn haast getypt en zeker niet op zijn plaats.

Geheel offtopic qua normalisatie; de omgeving waar ik binnen moet werken is uiterst stabiel en uiterst doordacht.

[ Voor 11% gewijzigd door Verwijderd op 04-04-2005 14:47 ]

Pagina: 1